繁体   English   中英

无法使用Selenium Webdriver在Internet Explorer中将焦点切换到newtab /窗口

[英]Unable to switch focus to newtab/window in Internet Explorer using Selenium Webdriver

这里的问题是,我无法同时将焦点集中在新的标签页/窗口上,而是将焦点始终放在第一个标签页/窗口上。 请帮忙。

driver=new InternetExplorerDriver();
driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
//driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"n");
for (String winHandle : driver.getWindowHandles()) 
{
    driver.switchTo().window(winHandle);
}
driver.get("https://google.com/");

IE驱动程序不支持窗口中选项卡的枚举。 此外,WebDriver通常不支持自动化“手动”打开的选项卡,例如使用Control+t打开的选项卡。 特定的驱动程序可能支持该功能,但这不是API合同的全球支持部分。

用户尝试“手动打开一个新标签页,切换到该标签页并使其自动化”的绝大多数情况下,用例并未得到充分考虑。 由于您拒绝说明为什么要执行此操作(而不是在新窗口中启动新的驱动程序实例),因此无法推测您应该采取什么措施。

满足您要求的最简单方法是遵循以下原则:

  1. 在初始窗口上获取一个句柄。
  2. 打开新窗口。
  3. 此时,获取所有打开的窗口的句柄列表,然后删除初始窗口句柄。
  4. 切换到上一步获取的列表中的其余窗口句柄。

打开标签页后,尝试使用此方法 ,使用Java机械手对其进行切换。 以下代码使用解决您问题的相同原理。

ArrayList<String> tabs2 = new ArrayList<String>(driver.getWindowHandles());
    System.out.println(tabs2.size());

    for (int i = tabs2.size()-1; i>=0; i--) {
        Thread.sleep(2000);
        driver.switchTo().window(tabs2.get(i));
        Robot robot = new Robot();

        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.keyPress(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_TAB);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        System.out.println(driver.getTitle() + "i: " + i);
        driver.close();
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM