在功能测试中,我试图写一个“然后”步骤,在这里我检查当前的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的正确方法是什么?