打开后如何使用 Selenium WebDriver 控制新选项卡?

How do I control new tabs with Selenium WebDriver after they are opened?

我需要 运行 在多个 Firefox 选项卡上执行不同的任务。每个选项卡将在应用程序启动时加载不同的 url。一个过程将 运行 在一个选项卡上,转到下一个,运行 下一个选项卡,转到下一个选项卡等。我的问题是当我 return 到在应用程序启动时打开的选项卡向上,我必须再次 运行 driver.get(url) 才能再次控制该选项卡。有没有一种方法可以控制选项卡,而不必重新 运行 driver.get(url) 来控制页面?

我的代码示例:

main(){
      int ix = 1;
      while(ix <= numberOfTabstoRun){
        driver.get(url[ix]);
        if(ix != numberOfTabstoRun){
            openNewTab(driver);
        }

        ix++;
      }

      /**THIS WONT WORK - can't control next tab**/
      while(true){
        //run process on open tab
        nextTab(driver);
      }


      /**I am forced to do this**/
      int x = 1;
      while(true){
        driver.get(url[x]);
        //run process on open tab
        nextTab(driver);
        x++;
      }

}



private void openNewTab(WebDriver driver){
    new Actions(driver).sendKeys(Keys.chord(Keys.CONTROL, "t")).perform();
}

private void nextTab(WebDriver driver){
    new Actions(driver).sendKeys(Keys.chord(Keys.CONTROL, Keys.TAB)).perform();
}

发送 ctrl+tab 后,您需要将驱动程序切换到新目标。

private void nextTab(WebDriver driver){
    new Actions(driver).sendKeys(Keys.chord(Keys.CONTROL, Keys.TAB)).perform();
    driver.switchTo().defaultContent();
}

更多详情请见 http://design-interviews.blogspot.com/2014/11/switching-between-tabs-in-same-browser-window.html