我想为量角器自动测试写一些条件。 示例:
if (currentUrl == comparedUrl) {// do first;}
else {// do second;}
为此,我尝试使用代码:
var currentUrl = browser.getCurrentUrl().then( function( url ) {
return url;
});
console.log("current url = " + currentUrl);
我得到回应:
current url = ManagedPromise::122 {[[PromiseStatus]]: "pending"};
但是下一个代码很好用:
var currentUrl = browser.getCurrentUrl().then( function( url ) {
console.log(url);
});
我不明白为什么,那不是我所需要的。我需要获取URL的字符串。
答案 0 :(得分:0)
如果您只想将当前网址与comparedUrl进行比较,则可以使用browser.getCurrentUrl();
var currentUrl = browser.getCurrentUrl();
if(currentUrl === comparedUrl) {
//do first
} else {
//do second
}
答案 1 :(得分:0)
使用异步等待
(async()=>{
var url = await browser.getCurrentUrl();
console.log(url)
})()
await将强制browser.getCurrentUrl()返回承诺。使用异步等待可以避免回调。
答案 2 :(得分:0)
您尝试过这样的事情吗?
var urlText = '';
var currentUrl = browser.getCurrentUrl()
.then(function(text){
urlText = text;
if (urlText == comparedUrl) {
// do first;
}
else {
// do second;
}
});
希望有帮助。
答案 3 :(得分:0)
browser.getCurrentUrl()
请查看承诺的工作方式。在以下示例中:
var currentUrl = browser.getCurrentUrl().then( function( url ) {
return url;
});
console.log("current url = " + currentUrl);
browser.getCurrentUrl()
和以下链接的回调都具有相同的返回类型Promise<string>
。这意味着currentUrl
没有字符串值。您将需要继续链接您的食堂,或者将其更改为异步/等待。
您需要在量角器配置中添加SELENIUM_PROMISE_MANAGER: false
。然后在测试中,您将可以等待Promises。
it('should do something', async () => {
const currentUrl = await browser.getCurrentUrl(); // promise is awaited, result is a string.
console.log(`current url = ${currentUrl}`);
});