如何使用selenium webdriver处理叠加/弹出窗口

时间:2014-05-17 20:50:29

标签: java selenium selenium-webdriver

我正在尝试通过网页自动初始配置(我的服务器)。点击我的服务器IP https:/ localhost:4443并输入我的凭据后,我得到一个更改密码的窗口(覆盖/弹出窗口)。

问题: - 如果我从另一个m / c或另一个浏览器浏览相同的ip,我会在窗口上显示一个窗口,即更改密码窗口(Please click the link to see the screenshot)上的另一个窗口。

我尝试的是获取窗口的句柄,但它不起作用,它只提供一个句柄。

**它也不是框架。

HTML代码 - https://dl.dropboxusercontent.com/u/91420517/Html_Code.JPG

这是我的代码

    WebDriver driver=new FirefoxDriver();
    driver.get("https://localhost:4443/ControlPoint/");
    driver.findElement(By.xpath("//*[@id='name']")).sendKeys("xxxxxx");
    driver.findElement(By.xpath("//*[@id='pass']")).sendKeys("xxxxxx");
    driver.findElement(By.xpath("//*[@id='loginForm123']/div[6]/div[1]/div")).click();

    Set<String> winIds = driver.getWindowHandles();
    System.out.println("Total Windows --- " + winIds.size());    // its resulting the size as 1 which is not correct.
    Iterator<String> it = winIds.iterator(); 
    String mainWin=it.next();
    String changeWin=it.next();
    String shareWin =it.next();
    driver.switchTo().window(shareWin);
    String warning = driver.findElement(By.xpath("html/body/div[4234]/div[1]/span")).getText();  // to get the text on 3 window
    System.out.println(warning);

如何解决此问题。请帮助。点击窗口3上的按钮的任何其他方式。

1 个答案:

答案 0 :(得分:1)

如果异步打开附加窗口,那么在创建它之前,您可能过早地检查它(getWindowHandles()} - 这是Selenium测试和异步页面更新的常见问题。

如果这是问题,可以通过在中间等待几次尝试来解决,每次检查是否出现了新窗口。

相关问题