簡體   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