等待量角器加载在新选项卡中打开的数据

时间:2017-06-13 12:59:36

标签: javascript protractor

我有一个场景,当我点击网站A中的元素时,它会在网站B的新标签页中打开。我能够导航到网站B的新选项卡,但必须使用我的客户希望我避免使用的browser.sleep()。我尝试使用像元素之后的承诺(网站A).click()。然后(function(){getallwindowshandle,然后移动到我选择的窗口});但我也必须使用browser.sleep()

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

2 个答案:

答案 0 :(得分:1)

最佳做法是使用 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');

答案 1 :(得分:0)

尽管这个问题有点老了,但我想提一下我是如何解决这个问题的:

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