【问题标题】:Using Nightwatch.js page objects使用 Nightwatch.js 页面对象
【发布时间】:2018-06-14 12:38:05
【问题描述】:

我想知道有没有一种方法可以在一个测试中使用多个页面对象,而不必在每个页面对象文件中指定一个 url。

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

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

我尝试过使用变量声明,例如

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

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

【问题讨论】:

  • 我不太确定我是否理解您要执行的操作。你能详细说明一些吗?您不想使用 url 导航到每个页面,因为您已经通过按钮点击到达那里?您是否在问如何引用页面对象中的元素而不像var loginButton = loginPage.elements.login.selector 那样做?

标签: node.js selenium browser ui-automation nightwatch.js


【解决方案1】:

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

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

【讨论】:

  • 这正是我正在寻找的信息。谢谢一百万。
  • 是的,刚刚在那里。再次感谢
猜你喜欢
  • 1970-01-01
  • 2019-06-17
  • 2019-06-06
  • 2019-02-15
  • 2016-02-18
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多