使用Selenium WebDriver和Java在浏览器选项卡之间切换

时间:2014-08-27 10:49:35

标签: java selenium selenium-webdriver browser-tab

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

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

它有时只是正常工作,但有时它会显示异常。 任何人都可以建议我使用java在单个窗口中切换标签的任何其他说明。

3 个答案:

答案 0 :(得分:8)

你必须在这里使用窗口句柄功能。以下是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

希望这有帮助!

答案 1 :(得分:3)

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

在某些浏览器中,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();

答案 2 :(得分:0)

就我而言,以下代码工作正常 -

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);