面对问题,然后使用Selenium Webdriver处理两个以上的窗口

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面对问题,然后使用Selenium Webdriver处理两个以上的窗口相关的知识,希望对你有一定的参考价值。

public class Abc{
    @Test
    public void test() throws InterruptedException{
    System.setProperty("webdriver.gecko.driver", System.getProperty("user.dir")+"\\src\\test\\java\\drivers\\geckodriver.exe");
    WebDriver driver=new FirefoxDriver();
    driver.manage().window().maximize();
    driver.get("URL");
    String mainWindow=driver.getWindowHandle();
    Set<String> set =driver.getWindowHandles();
    Iterator<String> itr= set.iterator();
    while(itr.hasNext()){
        String childWindow=itr.next();
        if(!mainWindow.equals(childWindow)){
        driver.switchTo().window(childWindow);
        System.out.println(driver.switchTo().window(childWindow).getTitle());
        driver.close();
        }
    }
    driver.switchTo().window(mainWindow);
    }
}

我正在使用此代码进行多窗口处理,并且它在两个窗口但三个或四个窗口都可以正常工作时,有时驱动程序未打开其他窗口。

答案

您可以在打开新窗口之前和之后使用窗口句柄来获取新打开的窗口

Set<String> beforeSet = driver.getWindowHandles();
// open new window
Set<String> afterSet = driver.getWindowHandles();
afterSet.removeAll(beforeSet);
String newWindowHandle = afterSet.iterator().next();
driver.switchTo().window(newWindowHandle);

以上是关于面对问题,然后使用Selenium Webdriver处理两个以上的窗口的主要内容,如果未能解决你的问题,请参考以下文章

爬虫之selenium模块

python — selenium爬取微博指数

如何用selenium模拟鼠标操作

Selenium IEDriverServer 日志记录

Selenium WebDriver的使用

selenium爬取网易云