【问题标题】:Switch between browser tabs using Selenium WebDriver with Java使用 Selenium WebDriver 和 Java 在浏览器选项卡之间切换
【发布时间】:2014-10-20 22:09:34
【问题描述】:

我需要在浏览器标签之间切换,使用了以下代码,

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");

它有时只能正常工作,但有时会显示异常。 谁能建议我是否有任何其他说明可以使用 java 在单个窗口中切换选项卡。

【问题讨论】:

  • 什么时候抛出错误,你得到了什么异常?
  • 我收到以下异常:线程“主”org.openqa.selenium.remote.UnreachableBrowserException 中的异常:与远程浏览器通信时出错。它可能已经死了。

标签: java selenium selenium-webdriver browser-tab


【解决方案1】:

你必须在这里使用窗口句柄功能。这是java中的示例工作代码:

    String parentHandle = driver.getWindowHandle(); // get the current window handle
    System.out.println(parentHandle);               //Prints the parent window handle 
    String anchorURL = anchor.getAttribute("href"); //Assuming u are clicking on a link which opens a new browser window
    anchor.click();                                 //Clicking on this window
    for (String winHandle : driver.getWindowHandles()) { //Gets the new window handle
        System.out.println(winHandle);
        driver.switchTo().window(winHandle);        // switch focus of WebDriver to the next found window handle (that's your newly opened window)              
    }
//Now your driver works on the current new handle
//Do some work here.....
//Time to go back to parent window
    driver.close();                                 // close newly opened window when done with it
    driver.switchTo().window(parentHandle);         // switch back to the original window

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    在浏览器窗口之间切换不同于切换黑白标签。

    windowhandler 命令在某些浏览器中可能有效,但不适用于所有浏览器。

    这是导航黑白标签的解决方案

    用于从左到右导航:

    Actions action= new Actions(driver);
    action.keyDown(Keys.CONTROL).sendKeys(Keys.TAB).build().perform();
    

    用于从右到左导航:

    Actions action= new Actions(driver);
    action.keyDown(Keys.CONTROL).keyDown(Keys.SHIFT).sendKeys(Keys.TAB).build().perform();
    

    【讨论】:

      【解决方案3】:

      在我的情况下,以下代码运行良好-

      String oldTab=driver.getWindowHandle();
          driver.findElement(pageObj.getL_Popup_Window()).click();
           ArrayList<String> newTab = new ArrayList<String>(driver.getWindowHandles());
              newTab.remove(oldTab);
              driver.switchTo().window(newTab.get(0));
          WebElement ele = driver.findElement(pageObj.getI_input_name());
          ele.click();
          ele.sendKeys(name);
          driver.findElement(pageObj.getI_submit()).click();
          driver.switchTo().window(oldTab);
      

      【讨论】:

        猜你喜欢
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 2017-03-21
        • 1970-01-01
        • 2017-05-13
        • 2018-12-15
        • 2015-02-20
        相关资源
        最近更新 更多