如何在Selenium2(Webdriver)中处理POPUP浏览器?

时间:2014-08-20 02:52:28

标签: java selenium-webdriver webbrowser-control

我使用的是Selenium2(Webdriver)。

好吧,我有一个问题。

我有一个A浏览器。  当我在A浏览器中单击一个按钮时,另一个弹出浏览器(B)打开。

而且,我在B浏览器中要做的过程已经完成,B浏览器并没有关闭。 但是,这不是我的问题。 B浏览器最初是以这种方式设计的。

我的问题是..

B浏览器的流程完成后,当我试图在A浏览器中查找C元素时,所以B浏览器没有关闭,我无法找到C元素。因为Selenium试图在B浏览器中找到C元素。

我只是想......

当我在浏览器B中执行某些操作时,浏览器B有一个句柄。 并且浏览器中的进程已完成,句柄必须在浏览器中移动。

我该怎么办?请帮助我。

1 个答案:

答案 0 :(得分:0)

以下是在Windows之间切换的示例代码: 使用Windows手柄,我们可以在窗口之间切换。

WebDriver driver=new FirefoxDriver();
//First navigating to Yahoo site
driver.get("http://www.Yahoo.com");
//Capturing the window handle
String strMainWindowHandle=driver.getWindowHandle();
//For better understanding printing the page title
System.out.println(driver.getTitle());

//Now opening a new window
driver.findElement(By.xpath("//body")).sendKeys(Keys.CONTROL+"n");
Set<String> winHandles=driver.getWindowHandles();
for(String handle:winHandles)
    driver.switchTo().window(handle);
//Navigating to Google site with new window i.e new window handle 
driver.get("http://www.google.com");
//For better understanding printing the page title
System.out.println(driver.getTitle());

//Switching back control to main Window which captured earlier
driver.switchTo().window(strMainWindowHandle);
System.out.println(driver.getTitle());

一旦你回到你的主窗口句柄,你就可以执行Click或任何你想要的。