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

问题描述 投票:0回答:1

在功能测试中,我正在尝试编写一个“Then”步骤,检查当前的URL。

在查看SO之后,似乎正确的方法是“等待”网址成为预期的网址:

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

但我只能看到:

错误:网址为ManagedPromise :: 19695 {[[PromiseStatus]]:“pending”}

因为browser.executeScript只返回一个Promise

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

angular typescript protractor gherkin
1个回答
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); });
    });
});
© www.soinside.com 2019 - 2024. All rights reserved.