繁体   English   中英

Angular 2 在量角器 e2e 测试中获取当前 URL

[英]Angular 2 get current Url in protractor e2e test

在我的一项 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);

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

任何使用.then() 的东西都是异步函数。 您的console.log()及其在代码中的当前位置是同步的,这意味着它将在.getCurrentUrl()返回值之前执行。 您的代码必须如下所示:

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

希望这有帮助!

GoLGo13是对的。 我想再添加一行,如果您知道预期的 url,那么您可以等待特定的 url。

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

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

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

如果您需要添加一个 url 来检查某些资产 url 等,这非常有效。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM