使用Nightwatch.js页面对象

问题描述 投票:2回答:1

我想知道有没有办法在一个测试中使用多个页面对象,而不必在每个页面目标文件中指定一个URL。

所有测试都在使用launch_url参数启动的登录页面上开始,并通过按钮点击导航到其他几个URL

我希望页面对象只包含元素选择器。

我已经尝试过使用变量声明

 `var loginButton = loginPage.elements.login.selector`

但这比在javascript文件中声明选择器没有任何优势,我可以在测试开始时导入

node.js selenium browser ui-automation nightwatch.js
1个回答
0
投票

您可以引用每个页面对象中的元素,而无需将它们分配给变量。语法与您期望的略有不同。这是我在测试中的表现。

假设我登录我的应用程序,登陆仪表板,然后导航到管理菜单并验证该页面上是否显示某些元素。我的测试看起来像这样(假设我已经在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应该与您在页面对象中命名元素的内容相匹配。

© www.soinside.com 2019 - 2024. All rights reserved.