【问题标题】:Unable to switch to newly opened tab in chrome using selenium无法使用 selenium 切换到 chrome 中新打开的选项卡
【发布时间】:2026-01-10 16:50:01
【问题描述】:

我从当前页面的链接打开了一个新标签。选项卡打开但焦点未转移到该选项卡,我也无法使用我使用的以下两种方法切换选项卡。我正在使用 Chrome。

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);
BaseClass.driver.findElement(By.xpath(xpathOfLinkToPage2)).sendKeys(selectLinkOpeninNewTab);

 //method one 
ArrayList<String> tabs = new ArrayList<String>(BaseClass.driver.getWindowHandles());
BaseClass.driver.switchTo().window(tabs.get(1));
//method two
String selectLinkOpeninNewTab2 = Keys.chord(Keys.CONTROL,Keys.TAB);
BaseClass.driver.findElement(By.cssSelector("body")).sendKeys(selectLinkOpeninNewTab2);

【问题讨论】:

  • 为什么使用ArrayList&lt;String&gt; tabs 让您的步骤变得复杂?可以考虑遍历WindowHandles吗?谢谢
  • 你能给我举个例子吗?我是新手
  • 您能否考虑展示您的一些工作以及您的实际手动步骤?谢谢

标签: google-chrome selenium browser-automation


【解决方案1】:
// open Site 1
String site_1_Window= driver.getWindowHandle();
System.out.println(site_1_Window);
// open Site 2
Set site_Windows= driver.getWindowHandles();
System.out.println(site_Windows);
for (String site_2_Window: driver.getWindowHandles())
{
  System.out.println(site_2_Window);
    driver.switchTo().window(site_2_Window);
 } 

【讨论】:

    【解决方案2】:

    尝试使用:

    driver.SwitchTo().Window(driver.WindowHandles.Last());
    

    也可以看到这个:http://www.binaryclips.com/2016/03/selenium-webdriver-in-c-switch-to-new.html 和这个Selenium webdriver selecting new window c#

    【讨论】: