首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用selenium在chrome中打开新选项卡

如何使用selenium在chrome中打开新选项卡
EN

Stack Overflow用户
提问于 2018-01-25 18:44:40
回答 4查看 8K关注 0票数 0

我正尝试在selenium中打开一个新选项卡,但它不起作用。它会在同一选项卡中打开url。

代码:

代码语言:javascript
复制
        cDriver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"t");
        cDriver.get(url1);
        cDriver.switchTo().window(tabs.get(1)); 

正在获取以下异常:

代码语言:javascript
复制
    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
EN

回答 4

Stack Overflow用户

发布于 2018-01-25 23:36:35

您可以使用javascript打开新的选项卡

代码语言:javascript
复制
public void openNewTab() {
    ((JavascriptExecutor)driver).executeScript("window.open('about:blank','_blank');");
}

如果要在新选项卡中执行操作,可以使用:

driver.switchTo().window();此方法接受字符串作为参数。准确地说,窗口句柄

你可以像这样得到所有的句柄

driver.getWindowHandles()。这将返回一组当前浏览器中的所有句柄。

为了切换到新创建的选项卡,遍历句柄并使用switchTo()方法,如下所示:

代码语言:javascript
复制
    Set<String> handles = driver.getWindowHandles();
    String currentWindowHandle = driver.getWindowHandle();
    for (String handle : handles) {
        if (!currentWindowHandle.equals(handle)) {
            driver.switchTo().window(handle);
        }
    }

警告:如果您有两个以上的选项卡,这可能会很棘手。

票数 2
EN

Stack Overflow用户

发布于 2018-01-25 18:49:47

代码将在新选项卡中打开该链接。

代码语言:javascript
复制
String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL,Keys.RETURN); 
driver.findElement(By.linkText("urlLink")).sendKeys(selectLinkOpeninNewTab);
票数 0
EN

Stack Overflow用户

发布于 2018-01-25 19:14:03

这种方式将会起作用:

代码语言:javascript
复制
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。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48440958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档