我正在尝试在 Selenium 中打开一个新选项卡,但它不起作用。它会在同一选项卡中打开网址。
代码:
cDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
cDriver.get(url1);
cDriver.switchTo().window(tabs.get(1));
出现以下异常:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
atcom.freedomoss.crowdcontrol.webharvest.plugin.selenium.RobotPlugin.executePlugin(RobotPlugin.java:187)
at org.webharvest.runtime.processors.WebHarvestPlugin.execute(WebHarvestPlugin.java:125)
at org.webharvest.runtime.processors.BaseProcessor.run(BaseProcessor.java:127)
at org.webharvest.runtime.processors.BodyProcessor.execute(BodyProcessor.java:27)
at org.webharvest.runtime.processors.WebHarvestPlugin.executeBody(WebHarvestPlugin.java:246)
at com.freedomoss.crowdcontrol.webharvest.plugin.selenium.RoboticsFlowPlugin.executePlugin(RoboticsFlowPlugin.java:98)
... 16 more
最佳答案
您可以使用 JavaScript 打开新选项卡
public void openNewTab() {
((JavascriptExecutor)driver).executeScript("window.open('about:blank','_blank');");
}
如果您想在新选项卡中执行操作,可以使用:
driver.switchTo().window();
此方法接受 String 作为参数。确切地说是窗口句柄
你可以像这样获取所有句柄
driver.getWindowHandles()
。这将返回当前浏览器中所有句柄的集合。
为了切换到新创建的选项卡,请迭代句柄并使用 switchTo() 方法,如下所示:
Set<String> handles = driver.getWindowHandles();
String currentWindowHandle = driver.getWindowHandle();
for (String handle : handles) {
if (!currentWindowHandle.equals(handle)) {
driver.switchTo().window(handle);
}
}
警告:如果您有 2 个以上的选项卡,这可能会很棘手。
关于java - 如何使用 selenium 在 chrome 中打开新标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48440958/