在功能测试中,我试图编写一个“然后”步骤,以检查当前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); });
});
但是出现错误,因为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为ManagedPromise :: 19695 {[[PromiseStatus]]:“待定”}
因为browser.executeScript
仅返回Promise
。
在错误消息中显示实际URL的正确方法是什么?
答案 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); });
});
});