我使用的是Selenium2(Webdriver)。
好吧,我有一个问题。
我有一个A浏览器。 当我在A浏览器中单击一个按钮时,另一个弹出浏览器(B)打开。
而且,我在B浏览器中要做的过程已经完成,B浏览器并没有关闭。 但是,这不是我的问题。 B浏览器最初是以这种方式设计的。
我的问题是..
B浏览器的流程完成后,当我试图在A浏览器中查找C元素时,所以B浏览器没有关闭,我无法找到C元素。因为Selenium试图在B浏览器中找到C元素。
我只是想......
当我在浏览器B中执行某些操作时,浏览器B有一个句柄。 并且浏览器中的进程已完成,句柄必须在浏览器中移动。
我该怎么办?请帮助我。
答案 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或任何你想要的。