在功能测试中,我正在尝试编写一个“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); });
});
但我得到一个错误,因为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')); });
});
但我只能看到:
错误:网址为ManagedPromise :: 19695 {[[PromiseStatus]]:“pending”}
因为browser.executeScript
只返回一个Promise
。
在错误消息中显示实际URL的正确方法是什么?
我终于找到了:
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); });
});
});