有没有办法等待 url 在 nightwatch 中包含某个值

Is there a way to wait for a url to contain a certain value in nightwatch

有一个等待元素可见的函数waitForElementVisible。有没有办法使用守夜人 API 等待 url 链接到特定值?

目前我们没有 waitForUrlEqual(),但如果 url 发生变化,您应该等待特定元素 visible/present。

例如:登录后,元素 ('input.password') 将不存在,因此: 而不是 browser.waitForUrlEqual(newurl)

我们可以试试

browser .waitForElementNotPresent('@password',5000) .verify.url(newUrl)

您可以通过调用

使用断言等待 url 更改
browser.assert.urlEquals(newUrl)

这里的技巧是可以全局设置断言在一个时间间隔内多次轮询,直到满足要求的条件。在那段时间之后,它最终会放弃并 return 一个错误。可以使用 nightwatch.json 全局部分中的 属性 waitForConditionTimeout 设置时间间隔。下面是一个例子

    "test_settings" : {
  "chrome" : {
    "launch_url" : "http://localhost",
    "selenium_port"  : 9515,
    "selenium_host"  : "localhost",
    "silent": true,
    "driver": "chrome",
    "default_path_prefix": "",
    "desiredCapabilities": {
        "browserName": "chrome",
        "chromeOptions" : {
          "args" : ["--no-sandbox","window-size=1280,800"]
        }
    },
    "globals": {
      "waitForConditionTimeout": 5000,
      "retryAssertionTimeout": 20000
    }}}