1

我试图在出现时将焦点切换到弹出窗口,但 getWindowHandles().size() 只返回 1 个窗口。

如何确定我是否可以切换到弹出窗口?或弹出窗口在我的情况下不是新窗口

这是代码的一部分:

String parentWindowHandlerP = driver.getWindowHandle(); // save ID parent window
String subWindowHandlerP = null;

    // action to call popup
    (new WebDriverWait(driver, 5)).until(ExpectedConditions.elementToBeClickable(By.id("pt1:pt_region0:2:pt1:ilov1::lovIconId"))).click();

    Set<String> handlesP = driver.getWindowHandles(); // get all windows
    Iterator<String> iteratorP = handlesP.iterator();
    while (iteratorP.hasNext()) {
        subWindowHandlerP = iteratorP.next();
    }
    // popup operations     
    driver.findElement(By.id("pt1:pt_region0:2:pt1:t1:_afrFltrc6::content")).sendKeys(Keys.RETURN);
    driver.findElement(By.id("pt1:pt_region0:2:pt1:ilov1_afrLovDialogId::ok")).click();

    driver.switchTo().window(parentWindowHandlerP); // back na parent window
4

1 回答 1

1

你可以使用这样的东西:

    String parentWindowHandlerP = driver.getWindowHandle(); 
    // action to call popup
    (new WebDriverWait(driver, 5)).until(ExpectedConditions.elementToBeClickable(By.id("pt1:pt_region0:2:pt1:ilov1::lovIconId"))).click();

    while (driver.getWindowHandles().size() < 2) {
        Thread.sleep(500);
    }
    Set<String> handles = driver.getWindowHandles();
    for (String windowHandle : handles) {
        if (!windowHandle.equals(parentWindowHandlerP)) {
            driver.switchTo().window(windowHandle);
            break;
        }
    }
于 2014-03-03T09:32:36.270 回答