Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用Selenium在Chrome浏览器上打开新选项卡_Java_Selenium_Selenium Webdriver_Webdriver - Fatal编程技术网

Java 如何使用Selenium在Chrome浏览器上打开新选项卡

Java 如何使用Selenium在Chrome浏览器上打开新选项卡,java,selenium,selenium-webdriver,webdriver,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());

我尝试了以下解决方案,但没有成功,我正在使用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();
解决方案1:
driver.findElement(通过.cssSelector(“body”)).sendKeys(Keys.CONTROL+“/t”);
ArrayList tabs=新的ArrayList(driver.getWindowHandles());
driver.switchTo().window(tabs.get(1));
驱动程序。获取(“http://google.com");
解决方案2:
动作动作=新动作(驱动);
act.keyDown(Keys.CONTROL).sendKeys(“t”).keyUp(Keys.CONTROL).build().perform();

在新选项卡中打开链接的唯一方法是模拟键盘快捷键。以下内容在FFX、Chrome和IE中适用

  • Ctrl+t将打开一个空白的新选项卡,并将焦点切换到该选项卡
  • 按住Ctrl键,然后单击链接将在新选项卡中打开链接,但将焦点保留在现有选项卡上
  • 按住Ctrl和Shift键,然后单击将在新选项卡中打开链接,并将焦点移动到新选项卡上
  • Ctrl+w将关闭当前选项卡并将焦点切换到最后打开的选项卡(但请注意,Ctrl+w即Ctrl+Shift+w将关闭所有选项卡!)
  • 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");
    
    WebDriver=new ChromeDriver();
    驱动程序。获取(“http://yahoo.com");  
    ((JavascriptExecutor)driver.executeScript(“window.open()”);
    ArrayList tabs=新的ArrayList(driver.getWindowHandles());
    driver.switchTo().window(tabs.get(1));
    驱动程序。获取(“http://google.com");
    
    附言
    在这里查看此错误->

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

    现在确定Java语法,但在量角器中可能是这样的

    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');
    });
    });
    });
    
    String baseUrl=”http://www.google.co.uk/";
    get(baseUrl);
    ((JavascriptExecutor)driver.executeScript(“window.open()”);
    Set tabs=new HashSet();
    tabs=driver.getWindowHandles();
    List li=新阵列列表(选项卡);
    driver.switchTo().window(li.get(1));
    驱动程序。获取(“https://www.fb.com");
    
    我想我已经看到了
    Ctrl+T
    在量角器测试中的工作
        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");