使用Selenium WebDriver在两个浏览器窗口之间切换

使用Selenium WebDriver在两个浏览器窗口之间切换,selenium,webdriver,Selenium,Webdriver,我使用Firefox驱动程序打开了两个URL。每当我调用驱动程序时,新的firefox窗口就会打开。我必须在这两个窗口之间切换。如何执行此操作?您可以使用以下代码根据窗口标题在窗口之间切换 private void handleMultipleWindows(字符串windowTitle){ 设置windows=driver.getWindowHandles(); 用于(字符串窗口:windows){ 驱动程序.切换到().窗口(窗口); if(driver.getTitle().contain

我使用Firefox驱动程序打开了两个URL。每当我调用驱动程序时,新的firefox窗口就会打开。我必须在这两个窗口之间切换。如何执行此操作?

您可以使用以下代码根据窗口标题在窗口之间切换

private void handleMultipleWindows(字符串windowTitle){
设置windows=driver.getWindowHandles();
用于(字符串窗口:windows){
驱动程序.切换到().窗口(窗口);
if(driver.getTitle().contains(windowTitle)){
返回;
}
}
}

同样,您可以使用URL或其他条件切换窗口。

我还添加了切换回mainWindowHandle的范围

如果您正在处理具有不同标题的窗口,您可以尝试使用以下功能

private String mainWindowsHandle; // Stores current window handle
 public static boolean swithToWindow(WebDriver driver,String title){
  mainWindowsHandle = driver.getWindowHandle();
  Set<String> handles = driver.getWindowHandles(); // Gets all the available windows
  for(String handle : handles)
  {
    driver.switchTo().window(handle); // switching back to each window in loop
    if(driver.getTitle().equals(title)) // Compare title and if title matches stop loop and return true
     return true; // We switched to window, so stop the loop and come out of funcation with positive response
  }
  driver.switchTo().window(mainWindowsHandle); // Switch back to original window handle
  return false; // Return false as failed to find window with given title.
 }
私有字符串mainWindowsHandle;//存储当前窗口句柄
公共静态布尔SwithToWindows(WebDriver驱动程序,字符串标题){
mainWindowsHandle=driver.getWindowHandle();
Set handles=driver.getWindowHandles();//获取所有可用的窗口
for(字符串句柄:句柄)
{
driver.switchTo().window(handle);//切换回循环中的每个窗口
if(driver.getTitle().equals(title))//比较title和if title匹配停止循环并返回true
return true;//我们切换到window,因此停止循环并以肯定的响应退出函数
}
driver.switchTo().window(mainWindowsHandle);//切换回原始窗口句柄
return false;//返回false,因为找不到具有给定标题的窗口。
}