如何获取量角器中当前Url的字符串?

时间:2019-01-28 18:22:57

标签: protractor

我想为量角器自动测试写一些条件。 示例:

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的字符串。

4 个答案:

答案 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}`); 
});