Node.js 使用Nightwatch.js页面对象
我想知道是否有一种方法可以在一个测试中使用多个页面对象,而不必在每个页面对象文件中指定url 所有测试都从使用Node.js 使用Nightwatch.js页面对象,node.js,selenium,browser,ui-automation,nightwatch.js,Node.js,Selenium,Browser,Ui Automation,Nightwatch.js,我想知道是否有一种方法可以在一个测试中使用多个页面对象,而不必在每个页面对象文件中指定url 所有测试都从使用launch\u url参数启动的登录页面开始,并通过单击按钮导航到其他几个url 我希望页面对象只包含元素选择器 我尝试过使用变量声明,例如 `var loginButton = loginPage.elements.login.selector` 但与在javascript文件中声明选择器相比,这并没有任何优势,我可以在测试开始时导入该文件您可以引用每个页面对象中的元素,而无需将
launch\u url
参数启动的登录页面开始,并通过单击按钮导航到其他几个url
我希望页面对象只包含元素选择器
我尝试过使用变量声明,例如
`var loginButton = loginPage.elements.login.selector`
但与在javascript文件中声明选择器相比,这并没有任何优势,我可以在测试开始时导入该文件您可以引用每个页面对象中的元素,而无需将它们分配给变量。语法与您预期的略有不同。以下是我在测试中如何做到这一点 比方说,我登录到我的应用程序,在仪表板上着陆,然后导航到管理菜单,并验证某个元素在该页面上是否可见。我的测试看起来像这样(假设我已经在
之前的钩子中设置了页面对象变量):
无论您在哪里看到@elementName
,都应该与您在页面对象中命名的元素相匹配 我不太确定我是否明白你想做什么。你能详细说明一下吗?你不想导航到每个带有url的页面,因为你已经通过点击按钮登陆了?你是在问如何引用页面对象中的元素,而不是像var loginButton=loginPage.elements.login.selector
?这正是我想要的信息。万分感谢。是的,我刚去过那里。再次感谢
'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');
}
}