【问题标题】:Not able to open new tab in Browser using Selenium Webdriver无法使用 Selenium Webdriver 在浏览器中打开新选项卡
【发布时间】:2018-02-01 20:39:54
【问题描述】:

我正在尝试使用下面的代码行在 selenium 中打开新标签

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

但标签没有打开。谁能告诉这个命令有什么问题? 也有人可以解释此命令中使用的"driver.findElement(By.cssSelector("body"))" 吗?我尝试搜索但没有正确答案

以下完成不起作用。它在 chrome 的同一选项卡中打开 gmail 和堆栈溢出,而不是打开新选项卡

package TestCode;

import java.util.concurrent.TimeUnit;

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.Keys;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class Chrome {

    public static void main(String[] args) throws InterruptedException {
        // TODO Auto-generated method stub

        System.setProperty("webdriver.chrome.driver","C:\\Akash\\Drivers\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();
        driver.get("https://www.gmail.com");
        String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL+"t"); 
        driver.findElement(By.tagName("body")).sendKeys(selectLinkOpeninNewTab);
        driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
        driver.get("https://stackoverflow.com/");
        System.out.println("Site open");
    }

}

【问题讨论】:

  • 因为body是HTML中定义的通用元素或标签

标签: selenium selenium-webdriver


【解决方案1】:

您可以使用 javaScripts 在 chrome 中打开新标签。

尝试下面的代码行

  JavascriptExecutor js = (JavascriptExecutor) driver; 
 js.executeScript("window.open('https://www.google.com','_blank');");

参考这个链接:- link

【讨论】:

  • windows.open() 对于 chrome 的不同浏览器的实现方式不同,它工作正常,对于 chrome,它正在打开新标签,但对于 firefox,它正在打开新浏览器:(
  • 不,它对firefox也是一样的,我也试过了,它对pe工作正常。在firefox控制台中输入这个window.open("google.com","_blank");
  • 在控制台中它会为 firefox 打开新标签,但在测试脚本中会打开新窗口
  • String currentUrl = getCurrentUrl();JavascriptExecutor js = (JavascriptExecutor) 驱动程序; js.executeScript("window.open('"+currentUrl+"','_blank');");
【解决方案2】:

control代替chord

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

对于 chrome 使用这个

先打开标签再点击网址

String selectLinkOpeninNewTab = Keys.chord(Keys.CONTROL+"t"); 
driver.findElement(By.tagName("body")).sendKeys(selectLinkOpeninNewTab);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
driver.get("https://stackoverflow.com/");
System.out.println("Site open");

【讨论】:

  • 我试过了,它适用于 Firefox,但不适用于 chrome 浏览器:(
  • 等一下,我也会为 chrome 提供解决方案
  • 请试试这个
  • 我试过了,但它没有在 chrome 中打开新标签。它仅在Firefox中工作。它与chrome驱动程序版本有什么关系吗?字符串 KeyString = Keys.CONTROL+"t"; driver.findElement(By.tagName("body")).sendKeys(KeyString);
  • 我粘贴了有问题的完整代码,供您参考
猜你喜欢
  • 2014-11-15
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 2018-11-01
  • 2018-08-14
  • 1970-01-01
  • 2016-01-09
  • 2020-06-26
相关资源
最近更新 更多