簡體   English   中英

等待量角器加載在新選項卡中打開的數據

[英]Wait for protractor to load data opened in new tab

我有一個場景,當我單擊網站 A 中的元素時,它會在網站 B 中的新選項卡中打開。 我能夠導航到網站 B 的新選項卡,但必須使用我的客戶希望我避免使用的 browser.sleep()。 我嘗試使用像 after element(Website A).click().then(function(){getallwindowshandle, then move to the window of my choice}); 這樣的承諾; 但在這里我也不得不使用 browser.sleep()

有人可以幫助我在使用量角器導航到新窗口時如何克服 browser.sleep() 。

最佳實踐是使用protractor.ExpectedConditions等待目標元素可見或啟用等。 使用量角器的預期條件,您可以讓量角器等待下一個選項卡准備好繼續。 您可以按照以下代碼:

代碼

   EC=protractor.ExpectedConditions;

   targetEleOnNewTab=element(locator)//find out an element on new tab
   //keep this line of code after switching to new tab before performing any 
   //operation on new tab
   browser.wait(EC.visibilityOf(targetEleOnNewTab),15000,'Ele Not Visible');

雖然這個問題有點老了,但我想提一下我是如何解決這個問題的:

var handles;
const targetNumberOfTabs = 2; // Or whatever
try {
     await browser.wait(
       async function() {
          handles = await browser.getAllWindowHandles();
          if(handles.length >= targetNumberOfTabs) {
                  return true;
           }
           else {
                  return false;
           }
        }
       ,30000, 'The number of tabs should be equal or greater ' + targetNumberOfTabs);
}
catch(err) {
       console.log(err);
       // Whatever you might want to do on error
}

基本上這段代碼使測試流程等待,直到達到預期的選項卡數量最多 30 秒。

要求:您需要知道您希望有多少個選項卡並將它們存儲在targetNumberOfTabs 並且您的環境需要支持async / await

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM