Java 如何在SeleniumWebDriver中使用for循环切换选项卡

Java 如何在SeleniumWebDriver中使用for循环切换选项卡,java,selenium,selenium-webdriver,Java,Selenium,Selenium Webdriver,你好。在SeleniumWebDriver中使用循环无法在选项卡之间切换,这是一个难题。我可以一次完成,但我需要在循环中重复使用代码 下面是错误: "Exception in thread" main "org.openqa.selenium.NoSuchWindowException: Unable to locate window" 我的代码可以找到所有元素,在新选项卡中打开链接,然后关闭它。但是,它无法使用下一个元素再次执行此操作 以下是我的代码(我正在使用Firefox): List-

你好。在SeleniumWebDriver中使用循环无法在选项卡之间切换,这是一个难题。我可以一次完成,但我需要在循环中重复使用代码

下面是错误:

"Exception in thread" main "org.openqa.selenium.NoSuchWindowException: Unable to locate window"
我的代码可以找到所有元素,在新选项卡中打开链接,然后关闭它。但是,它无法使用下一个元素再次执行此操作

以下是我的代码(我正在使用Firefox):

List-allegements=driver.findElements(By.className(“4zhc5”);
int s=等位基因.size();
System.out.println(“要检查的总用户数:“+allegements.size()”);
对于(int i=0;i
我还使用创建了一个原型页面。该错误出现在第二次尝试执行代码时。只是脚本没有单击另一个名为“可爱”的元素


谢谢你看

您需要切换回链接所在的原始窗口

  • 点击其中一个,如果链接
  • 切换到该选项卡
  • 关闭选项卡
  • 切换回获取链接的默认窗口
  • 最简单的方法是存储“原始”窗口并始终切换回该窗口。
    winHandleBefore=driver.getWindowHandle()

    关闭选项卡时

    driver.close(); 
    

    driver.switchTo().window(winHandleBefore)

    我认为问题在于,您正在获取所有窗口(比如5个)并切换到某个窗口,执行一些操作并关闭该窗口。现在我们只有4个窗口,但列表中仍有5个窗口。在第二次迭代中,脚本试图切换到已删除的窗口并抛出错误,我认为您是对的。我不知道如何修复它,这似乎很难。在处理第一个元素后,第一次在第一个选项卡中,您可以在不关闭该选项卡的情况下继续处理下一个元素吗?否则,我们需要再次执行windowhandles,这样它就不会有已删除的选项卡。我必须在执行某些操作后立即关闭该卡,该列表可能包含例如50个链接。在这种情况下如何再次使用windowshandles?感谢您的回答和研究,一个简单的解决方案对我很有用。
    driver.close();