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

时间:2019-01-16 10:01:27

标签: angular typescript protractor gherkin

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

看完SO之后,似乎正确的方法是“等待” 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); });
});

但是出现错误,因为locationundefined

我还尝试了以下方法:

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为ManagedPromise :: 19695 {[[PromiseStatus]]:“待定”}

因为browser.executeScript仅返回Promise

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

1 个答案:

答案 0 :(得分:1)

我终于找到了它:

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); });
    });
});