我的测试代码会做很多事情,然后自动打开新标签页,并在新标签页中自动打开新窗口(不是标签页)。

当我使用以下代码时:driver.getWindowHandles()它返回2个选项卡ID而不是3个选项卡ID。

java - 如何处理在新标签页中自动打开的新窗口?-LMLPHP

最佳答案

如果这是一个新的窗口来计算WindowHandles的数量,则需要为numberOfWindowsToBe(2)引入WebDriverWait,并且可以使用以下代码块:

String mainWindowHandler = driver.getWindowHandle(); // store mainWindowHandler for future references
//line of code that opens a new TAB / Window
new WebDriverWait(driver, 5).until(ExpectedConditions.numberOfWindowsToBe(2));  //induce WebDriverWait
Set<String> handles = driver.getWindowHandles();
Iterator<String> iterator = handles.iterator();
while (iterator.hasNext())
{
    String subWindowHandler = iterator.next();
    if (!mainWindowHandler.equalsIgnoreCase(subWindowHandler))
    {
        driver.switchTo().window(subWindowHandler);
    }
}




参考文献

您可以在以下位置找到几个相关的详细讨论:


Selenium switch focus to tab, which opened after clicking link
Best way to keep track and iterate through tabs and windows using WindowHandles using Selenium
org.openqa.selenium.WebDriverException: invalid argument: 'handle' must be a string while window handling with Selenium and Java in Linux

10-01 00:06