使用 Nightwatch.js 个页面对象
Using Nightwatch.js page objects
我想知道是否有一种方法可以在一次测试中使用多个页面对象,而无需在每个页面对象文件中指定 url。
所有测试都从使用 launch_url
参数启动的登录页面开始,并通过单击按钮导航到其他几个 URLS
我希望页面对象只包含元素选择器。
我试过使用变量声明,例如
`var loginButton = loginPage.elements.login.selector`
但这并不比在我可以在测试开始时导入的 javascript 文件中声明选择器有任何优势
您可以引用每个页面对象中的元素,而无需将它们分配给变量。语法与您预期的略有不同。这是我在测试中的做法。
假设我登录到我的应用程序,登陆仪表板,然后导航到管理菜单并验证某些元素在该页面上是否可见。我的测试看起来像这样(假设我已经在 before
挂钩中设置了我的页面对象变量):
'Test example 1': (browser) => {
loginPage.setValue('@usernameInput', username);
.setValue('@passwordInput', password)
.click('@loginBtn');
dashboardPage.waitForElementVisible('@mainMenu', 1000, () => {
dashboardPage.click('@mainMenu')
.click('@adminMenuOption');
adminMenuPage.verify.visible('@someElement');
}
}
你看到的任何地方 @elementName
都应该与你在页面对象中命名的元素相匹配。
我想知道是否有一种方法可以在一次测试中使用多个页面对象,而无需在每个页面对象文件中指定 url。
所有测试都从使用 launch_url
参数启动的登录页面开始,并通过单击按钮导航到其他几个 URLS
我希望页面对象只包含元素选择器。
我试过使用变量声明,例如
`var loginButton = loginPage.elements.login.selector`
但这并不比在我可以在测试开始时导入的 javascript 文件中声明选择器有任何优势
您可以引用每个页面对象中的元素,而无需将它们分配给变量。语法与您预期的略有不同。这是我在测试中的做法。
假设我登录到我的应用程序,登陆仪表板,然后导航到管理菜单并验证某些元素在该页面上是否可见。我的测试看起来像这样(假设我已经在 before
挂钩中设置了我的页面对象变量):
'Test example 1': (browser) => {
loginPage.setValue('@usernameInput', username);
.setValue('@passwordInput', password)
.click('@loginBtn');
dashboardPage.waitForElementVisible('@mainMenu', 1000, () => {
dashboardPage.click('@mainMenu')
.click('@adminMenuOption');
adminMenuPage.verify.visible('@someElement');
}
}
你看到的任何地方 @elementName
都应该与你在页面对象中命名的元素相匹配。