在nightwatch中等待新URL加载的正确方法是什么?

Bry*_*lfe 6 javascript nightwatch.js

我正在测试的页面有一个按钮,可以将您带到同一站点上的不同页面.点击该按钮后,我想在继续之前等待该页面加载.通常情况下,我只是等待该页面上的某个元素加载,但由于我最近更新了nightwatch/selenium,所以waitForElementPresent()测试已停止工作.在调试问题的过程中,我认为等待加载新URL是有意义的,但我没有看到一个守夜人的方式来做到这一点.我可以使用pause()后跟assert.urlContains()来硬编码等待,但必须有更好的方法.有什么建议?

过去的工作原理:

this.waitForElementVisible(runCSS,3000)
    .click(runCSS)
    .waitForElementPresent(newPageElementCSS,5000)
Run Code Online (Sandbox Code Playgroud)

但是现在它在第二次等待时超时,即使我可以清楚地看到浏览器显示屏上的新页面(Windows 8.1上的Firefox 45.0.1).

Jan*_*ddy -1

我猜想,在 Nightwatch.js 中,等待页面加载可以使用 DOM 的“body”元素来实现。假设,如果我们想让页面等待 1 秒。我们将使用命令来实现它.waitForElementVisible('body', 1000)。第二个参数以毫秒为单位。

  • 如果旧页面上也有 body 元素,则这不一定有效。如果新页面尚未加载并且旧页面仍然可见(即单击链接后立即),我假设旧页面将有一个“body”,并且在新页面加载之前将满足此条件。最好等待您知道新页面上存在但第一个页面上不存在的元素(如果可能的话) (5认同)
  • 要补充 GrayedFox 的评论,如果您正在使用 HTML5 导航执行任何类型的单页应用程序,这也不起作用 - 页面不会加载,但页面内容会被替换,并且通过使用“history.pushState”更改 URL ()` (3认同)