无法访问NightwatchJS中页面的URL

时间:2018-09-16 22:40:02

标签: selenium selenium-webdriver nightwatch.js

我无法间歇地运行测试期间获得该url。 让我为您提供背景:单击页面上的一个按钮时,它将导航到下一页。导航时,我想在测试期间验证网址。 下面是我用来从当前页面获取url的代码片段。

1。用于URL声明的Nightwatch的本机实现

assertUrlContains(text) {
  this.assert.urlContains(text);
  return this;
}

2。此外,尝试使用带有承诺模式的api.url来获取网址。

getCurrentUrl() {
      return new Promise((resolve) => {
        this.api.url((result) => {
          resolve(result.value);
        });
      });
    }

这两种方法都有相同的问题,以下是错误的堆栈跟踪:

SEARCH RESULTS URL: null
 (node:12375) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): TypeError: Cannot read property 'indexOf' of null
 (node:12375) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
✖ TypeError: Cannot read property 'indexOf' of null 

有些奇怪的是,我注意到浏览器导航到目标页面,但是即使页面加载事件完成了,守夜人也无法获取URL。

1 个答案:

答案 0 :(得分:0)

您可以在单击按钮后添加明确的等待条件,以确保成功加载了所需的页面。然后,您可以使用以下方法之一来验证URL:

  • 使用http://nightwatchjs.org/api#assert-urlEquals

  • 中的urlEquals API进行夜视
  • 您可以通过测试脚本window.location.href执行javascript命令来检索窗口的url并将其另存为字符串。然后,您可以对此字符串执行断言