Chrome中的Selenium Java新标签 - 不会打开,在同一标签中保持打开URL

时间:2016-12-04 23:11:58

标签: 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。我也尝试使用动作。

3 个答案:

答案 0 :(得分:1)

您需要将驱动程序切换到新选项卡。在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是为驱动程序而不是制表符/窗口定义的。打开新标签后无需再次定义。

答案 1 :(得分:1)

这是chromedriver本身的一个问题。见the related bug submitted

答案 2 :(得分:0)

请尝试使用Selenium Java在Chrome中打开新标签页。

     package com.sample;



        import org.openqa.selenium.chrome.ChromeDriver;
        import org.openqa.selenium.chrome.ChromeOptions;

        public class NewWindow {

            public static void main (String[] args){
                System.setProperty ("webdriver.chrome.driver", "C:\\Chrome Driver\\chromedriver.exe");

                ChromeOptions options = new ChromeOptions(); 
                options.addArguments("disable-arguments");


                WebDriver driver = new ChromeDriver();
                driver.get("https://www.google.com");

((JavascriptExecutor) driver).executeScript("window.open('http://facebook.com/');");

        }
    }