java - Chrome 中的 Selenium Java 新选项卡 - 无法打开,始终在同一选项卡中打开 URL

标签 java google-chrome selenium selenium-webdriver selenium-chromedriver

package javaapplication1;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class JavaApplication1 {
    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.chrome.driver", "C:\\Users\\Aca\\desktop\\chromedriver.exe");
        // Initialize driver
        WebDriver driver = new ChromeDriver();
        //Maximize browser window
        driver.manage().window().maximize();
        //Go to URL
        driver.get("http://www.google.com");
        //Set timeout
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        // Open new tab  – May be you are stuck here
        driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");
        //Go to URL
        driver.get("http://www.gmail.com");
        //Set new tab timeout
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);        
    }
}

我正在尝试打开一个新选项卡,同时打开上一个选项卡.. 我无法打开新标签。它不断在同一选项卡中打开 URL。我还尝试使用操作。

最佳答案

您需要将驱动程序切换到新选项卡。在 Chrome 中,就像切换窗口一样

String tabHandle = driver.getWindowHandle();

driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "t");

// switch to the new window
for (String handle : driver.getWindowHandles()) {
    if (!handle.equals(tabHandle))
    {
        driver.switchTo().window(handle);
    }
}

driver.get("http://www.gmail.com");

// close the new tab and switch back to the old one
driver.close();
driver.switchTo().window(tabHandle);

顺便说一句,implicitlyWait 是为驱动程序而不是选项卡/窗口定义的。打开新选项卡后无需再次定义。

关于java - Chrome 中的 Selenium Java 新选项卡 - 无法打开,始终在同一选项卡中打开 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40964837/

相关文章:

java - 使用 Java 和 JXL/JExcel 读取电子表格

javascript - Chrome 中的 NicEdit 错误

angularjs - 单击其他选项卡关闭弹出窗口

java - 如何将一个独立项目添加到另一个maven项目中

java - 通过字节码将私有(private)类从 Kotlin 转换为 Java

java - 我已经使用 docker 构建了命令并且输出成功并且我无法打开本地主机 7604

java - 在 thymeleaf 中执行迭代时添加序列号

JavaFX 将标签文本属性绑定(bind)到多个属性更改

javascript - Chrome - "width: 0px"问题

java - 如何有效改变WebDriver对象的浏览器名称?