如何使用Selenium在Chrome浏览器上打开新标签页

时间:2018-05-04 06:43:28

标签: java selenium selenium-webdriver webdriver

我已经尝试了以下解决方案,但它没有用,我使用的是Selenium 3.9.1和Chrome v66.0.3,我们还有其他替代解决方案吗?

Solution 1:
    driver.findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL + "/t");
    ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    driver.get("http://google.com");
Solution 2:
    Actions act = new Actions(driver);
    act.keyDown(Keys.CONTROL).sendKeys("t").keyUp(Keys.CONTROL).build().perform();

3 个答案:

答案 0 :(得分:0)

在新标签页中打开链接的唯一方法是模拟键盘快捷键。以下内容适用于FFX,Chrome&amp; IE

  1. Ctrl + t将打开一个空白的新标签,并将焦点切换到它。
  2. 按住Ctrl键,然后点击该链接将在新标签页中打开该链接,但将重点放在现有标签页上。
  3. 按住Ctrl和Shift键,然后单击将打开新标签页中的链接并将焦点移至新标签页。
  4. Ctrl + w将关闭当前选项卡并将焦点切换到上一个打开的选项卡(但请注意Ctrl + W,即Ctrl + Shift + w将关闭所有选项卡!)
  5. Selenium(目前)在浏览器窗口中没有任何标签概念,所以为了打开标签然后测试它你必须使用选项3.

    尝试这样的事情:

     WebDriver driver = new ChromeDriver();
        driver.get("http://yahoo.com");  
        ((JavascriptExecutor)driver).executeScript("window.open()");
        ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
        driver.switchTo().window(tabs.get(1));
        driver.get("http://google.com");
    

    P.S 看看这个bug - &gt; https://github.com/SeleniumHQ/selenium/issues/5462

答案 1 :(得分:0)

为什么不使用JavaScriptExecutor打开一个新窗口并切换到它?

现在确定Java语法,但在Protractor中它可能是这样的

browser.executeScript('window.open()').then(function () {
        browser.getAllWindowHandles().then(function (handles) {
            var secondWindow = handles[1];
            browser.ignoreSynchronization = true;
            browser.switchTo().window(secondWindow).then(function () {
                browser.get('https://google.com');
});
});
});

答案 2 :(得分:0)

    String baseUrl = "http://www.google.co.uk/";
    driver.get(baseUrl);
    ((JavascriptExecutor) driver).executeScript("window.open()");

    Set<String> tabs = new HashSet<String>();

    tabs = driver.getWindowHandles();

    List<String> li = new ArrayList<String>(tabs);

    driver.switchTo().window(li.get(1));
    driver.get("https://www.fb.com");