我正尝试在selenium中打开一个新选项卡,但它不起作用。它会在同一选项卡中打开url。
代码:
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发布于 2018-01-25 23:36:35
您可以使用javascript打开新的选项卡
public void openNewTab() {
((JavascriptExecutor)driver).executeScript("window.open('about:blank','_blank');");
}如果要在新选项卡中执行操作,可以使用:
driver.switchTo().window();此方法接受字符串作为参数。准确地说,窗口句柄
你可以像这样得到所有的句柄
driver.getWindowHandles()。这将返回一组当前浏览器中的所有句柄。
为了切换到新创建的选项卡,遍历句柄并使用switchTo()方法,如下所示:
Set<String> handles = driver.getWindowHandles();
String currentWindowHandle = driver.getWindowHandle();
for (String handle : handles) {
if (!currentWindowHandle.equals(handle)) {
driver.switchTo().window(handle);
}
}警告:如果您有两个以上的选项卡,这可能会很棘手。
发布于 2018-01-25 18:49:47
代码将在新选项卡中打开该链接。
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN);
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);发布于 2018-01-25 19:14:03
这种方式将会起作用:
driver.get("https://www.google.com.br/");
Robot robot = new Robot();
robot.delay(1000);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_T);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.delay(2000);
ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
driver.get("https://br.yahoo.com/");通常,您需要将驱动程序更改为要使用的选项卡。如果需要关闭该选项卡,可以使用driver.close();但要使用flist选项卡,则需要使用另一个swichTo。
https://stackoverflow.com/questions/48440958
复制相似问题