角度2在量角器e2e测试中获得当前Url

时间:2017-10-04 18:12:56

标签: javascript angular selenium-webdriver protractor

在我的一个e2e测试中,我需要获取当前的url并暂停执行测试,直到我得到它。这是我目前的代码:

let publicUrl;
browser.wait(()=>{
  browser.getCurrentUrl().then((url)=>{
    publicUrl = url;
  })
});
console.log(publicUrl);

publicUrl始终未定义,因为console.log()行在设置值之前执行。我尝试了browser.wait()browser.getCurrentUrl()的多种组合,但没有成功:

let publicUrl;

browser.wait(()=>{
  return browser.getCurrentUrl()
}).then((url) => {
  publicUrl = url;
});

console.log(publicUrl);

我很确定这一定是可能的,所以不确定我做错了什么。

3 个答案:

答案 0 :(得分:0)

使用 .then()的任何内容都是asynchronous函数。您的 console.log()及其在代码中的当前位置为synchronous,这意味着它会在 .getCurrentUrl()返回值之前执行。您的代码必须如下所示:

let publicUrl;
browser.wait(()=>{
  browser.getCurrentUrl().then((url)=>{
    publicUrl = url;
    return console.log(publicUrl);
  });
});

希望这有帮助!

答案 1 :(得分:0)

GoLGo13是对的。 我想添加一行,如果你知道,你的预期网址,然后 你可以等待特定的网址。

首先在公共网址中定义您的预期网址;

let publicUrl=yourExpectedUrl;
browser.wait(()=>{
  browser.getCurrentUrl().then((url)=>{
    return url==publicUrl;
  })
});

答案 2 :(得分:0)

const test = await browser.driver.getCurrentUrl();

如果您需要添加网址以检查某些资产网址等,则此方法非常理想。

参考:https://github.com/angular/protractor/issues/5154#issuecomment-667656260