【问题标题】:Getting difficulty to focus on newly open window in selenium难以专注于硒中新打开的窗口
【发布时间】:2020-05-03 09:13:52
【问题描述】:

我无法专注于使用 selenium 和 java 新打开的窗口。 我正在使用 Internet Explorer 运行我的应用程序。 新窗口正在打开,但无法在新窗口上执行任何操作。 我试过了

Set<String> allwindows = driver.getWindowHandles();

但问题仍未解决。

下面是我正在使用的代码。

driver.get("www.tririga.com");
String parentwindow=driver.getWindowHandle();
driver.findElement(By.id("login")).click();

for(String childwindow: driver.getWindowHandles()) {
    driver.switchto().window(childwindow);
    driver.findElement(By.id("submit")).click();
    driver.close();
}

driver.switchto().window(parentwindow);
driver.close();

【问题讨论】:

    标签: java selenium selenium-webdriver window-handles


    【解决方案1】:

    您需要检查您没有使用第一个窗口句柄进行切换。您也可以通过显式等待等待新窗口打开

    WebDriverWait wait = new WebDriverWait(driver, 10);
    
    driver.findElement(By.id("login")).click();
    
    wait.until(ExpectedConditions.numberOfWindowsToBe(2));
    for(String childwindow: driver.getWindowHandles()) {
        if (!childwindow.equals(parentwindow)) {
            driver.switchto().window(childwindow);
            driver.findElement(By.id("submit")).click();
            driver.close();
        }
    }
    
    driver.switchto().window(parentwindow);
    driver.close();
    

    如果您的代码到此结束,而您只想关闭所有窗口,请使用quit()

    退出此驱动程序,关闭所有关联的窗口。

    for(String childwindow: driver.getWindowHandles()) {
        if (!childwindow.equals(parentwindow)) {
            driver.switchto().window(childwindow);
            driver.findElement(By.id("submit")).click();
        }
    }
    
    driver.quit();
    

    【讨论】:

    • 以上代码不适合我。在下面的行中使索引脱离债券错误。 wait.until(ExpectedConditions.numberOfWindowsToBe(2));
    • @JayeshKharbas 不太可能,这个方法中没有任何东西可以抛出这个异常。您甚至可以查看source code
    猜你喜欢
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-22
    • 2014-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多