检查预期 URL 并显示实际 URL
Check expected URL and display the actual URL
在功能测试中,我尝试编写一个 "Then" 步骤来检查当前 URL。
在查看 SO 之后,似乎正确的方法是 "wait" 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')); });
});
但我只能看到:
Error: URL was ManagedPromise::19695 {[[PromiseStatus]]: "pending"}
因为browser.executeScript
只有returns一个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); });
});
});
在功能测试中,我尝试编写一个 "Then" 步骤来检查当前 URL。
在查看 SO 之后,似乎正确的方法是 "wait" 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')); });
});
但我只能看到:
Error: URL was ManagedPromise::19695 {[[PromiseStatus]]: "pending"}
因为browser.executeScript
只有returns一个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); });
});
});