[英]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.