代码之家  ›  专栏  ›  技术社区  ›  Arnaud Denoyelle

检查预期的URL并显示实际的URL

  •  0
  • Arnaud Denoyelle  · 技术社区  · 7 年前

    在功能测试中,我试图写一个“然后”步骤,在这里我检查当前的URL。

    这样看来,正确的做法是“等待”URL成为预期的URL:

    Then('The URL contains {string}', function(url, callback) {
      browser.wait(EC.urlContains(url), 5000)
        .then(() => callback())
    });
    

    问题是,如果条件错误,我不知道实际的URL是什么,这将有助于调试。

    我试着做以下工作:

    Then('The URL contains {string}', function(url, callback) {
      browser.wait(EC.urlContains(url), 5000)
        .then(() => callback())
        .catch(() => { throw Error('URL was ' + location.href); });
    });
    

    但我得到了一个错误,因为 location 是 undefined .

    我还尝试了以下方法:

    Then('The URL contains {string}', function(url, callback) {
      browser.wait(EC.urlContains(url), 5000)
        .then(() => callback())
        .catch(() => { throw Error('URL was ' + browser.executeScript('location.href')); });
    });
    

    但我只能看到:

    错误:url已被管理promise::19695[[promisestatus]]:“挂起”

    因为 browser.executeScript 只返回一个 Promise .

    在错误消息中显示实际URL的正确方法是什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Arnaud Denoyelle    7 年前

    我终于找到了它:

    Then('The URL contains {string}', function (url, callback) {
      browser.wait(EC.urlContains(url), 5000)
        .then(() => callback())
        .catch(() => {
          browser.getCurrentUrl().then((url) => { throw Error('URL was ' + url); });
        });
    });