Java 无法使用Selenium Webdriver在Internet Explorer中将焦点切换到新选项卡/窗口
这里的问题是,我无法同时将焦点集中到新的选项卡/窗口,而是将焦点保留在第一个选项卡/窗口中。请帮忙Java 无法使用Selenium Webdriver在Internet Explorer中将焦点切换到新选项卡/窗口,java,internet-explorer,selenium,selenium-webdriver,Java,Internet Explorer,Selenium,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 winHa
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合同中全局支持的部分
绝大多数时候,用户试图“手动打开一个新标签,切换到它,并使其自动化”,但用例并没有完全考虑清楚。由于您拒绝说明为什么要执行此操作,而不是在新窗口中启动新的驱动程序实例,因此无法推测您应该采取何种操作。IE驱动程序不支持在窗口中枚举选项卡。此外,WebDriver一般不支持自动“手动”打开选项卡,如使用
Control+t
打开的选项卡。特定的驱动程序可能支持该功能,但它不是API合同中全局支持的部分
绝大多数时候,用户试图“手动打开一个新标签,切换到它,并使其自动化”,但用例并没有完全考虑清楚。由于您拒绝说明为什么要执行此操作,而不是在新窗口中启动新的驱动程序实例,因此无法推测您应该采取什么操作。请尝试,在打开选项卡后使用Java robot进行切换。下面的代码使用与解决问题相同的原理
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();
}
ArrayList tabs2=新的ArrayList(driver.getWindowHandles());
System.out.println(tabs2.size());
对于(int i=tabs2.size()-1;i>=0;i--){
《睡眠》(2000年);
driver.switchTo().window(tabs2.get(i));
机器人=新机器人();
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_控制);
System.out.println(driver.getTitle()+“i:”+i);
driver.close();
}
打开选项卡后,请尝试使用Java robot进行切换。下面的代码使用与解决问题相同的原理
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();
}
ArrayList tabs2=新的ArrayList(driver.getWindowHandles());
System.out.println(tabs2.size());
对于(int i=tabs2.size()-1;i>=0;i--){
《睡眠》(2000年);
driver.switchTo().window(tabs2.get(i));
机器人=新机器人();
机器人按键(KeyEvent.VK_控制);
robot.keyPress(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_选项卡);
robot.keyRelease(KeyEvent.VK_控制);
System.out.println(driver.getTitle()+“i:”+i);
driver.close();
}
你能给我一个关于@Tom Trumper的代码吗?你能给我一个关于@Tom Trumper的代码吗?分享你的研究对每个人都有帮助。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参阅。我已经尝试了上述代码,它在firefox浏览器中运行良好,[link]中提供的解决方案共享您的研究成果,可以帮助所有人。告诉我们您尝试了什么,以及为什么它不能满足您的需求。这表明你花了时间来帮助自己,它使我们避免重复显而易见的答案,最重要的是,它帮助你得到一个更具体和相关的答案!另请参阅。我已经尝试了上述代码,它在firefox浏览器和[链接]中提供的解决方案中运行良好