【问题标题】:How to open a new tab Chrome and Firefox using Selenium3 WebDriver with Java?如何使用 Selenium3 WebDriver 和 Java 打开新标签 Chrome 和 Firefox?
【发布时间】:2018-01-12 10:40:16
【问题描述】:

我在使用 Selenium 3 在 Firefox 和 Chrome 中打开新标签时遇到问题。

SeleniumTestBase.getDriver().findElement(By.cssSelector("body")).sendKeys(Keys.CONTROL +"\t");

不适用于 Chrome 和 Firefox。

我可以将以下代码用于 Chrome,但不能用于 Firefox,在 Firefox 中它会打开新的 Windows。

JavascriptExecutor js = (JavascriptExecutor) SeleniumTestBase.getDriver();
js.executeScript("window.open('http://localhost:8080/games.html#machine','_blank');");

我目前使用:

  • 硒服务器独立:3.8.1

  • chromedriver:2.34

  • geckodriver:0.19.1

非常感谢。

此致,

萨莱

【问题讨论】:

  • 当您应该发送 control-t (tee) 时,您正在发送 control-tab

标签: selenium selenium-chromedriver geckodriver chrome-web-driver iedriverserver


【解决方案1】:

我的解决方案,如果将来有人需要它

driver.get('https://google.com')
last_handle = driver.current_window_handle
driver.execute_script('window.open("https://google.com", "new window")')
driver.switch_to.window(last_handle)
driver.close()
for i in driver.window_handles:
    driver.switch_to.window(i)
driver.get('https://google.com.ua/')

【讨论】:

    【解决方案2】:
    • 要在Firefox / Chrome / Internet Explorer 中打开 New Blank TAB,您可以使用以下代码块:

      ((JavascriptExecutor) driver).executeScript("window.open('','_blank');");
      
    • 要在 New TABFirefox / Chrome / Internet Explorer 中打开 URL http://localhost:8080/games.html#machine,您可以使用以下代码块:

      ((JavascriptExecutor) driver).executeScript("window.open('http://localhost:8080/games.html#machine');");
      

    【讨论】:

      【解决方案3】:

      使用 JavaScript 在当前页面中插入一个链接 DOM 节点,然后点击它,最后将其删除。 DOM节点应该被不同的主浏览器支持。

      public newTab(String url) {
          String script = 
              "var d=document,a=d.createElement('a');" + 
              "a.target='_blank';a.href='%s';a.innerHTML='new tab';" + 
              "d.body.appendChild(a);" + 
              "a.click();a.parentNode.removeChild(a);";
      
          ((JavascriptExecutor) driver).executeScript(String.format(script, url));
      }
      

      请在浏览器的 DevTool 控制台选项卡中执行下面的 javascript,如果它按预期工作,那么上面的 Java 代码也应该可以工作。

      var d=document,a=d.createElement('a');a.target='_blank';a.href='https://angularjs.org/';a.innerHTML='new tab';d.body.appendChild(a);a.click();
      

      【讨论】:

      • 这个 newTab() 方法在 Firefox 中打开一个新窗口。不是标签。
      • 我在我的 Firefox 57.0.4 上试过,它工作正常。我更新了我的答案,请先在你的 Firefox 上执行我的答案中的 javascript。
      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      • 1970-01-01
      • 2014-03-13
      • 2019-12-16
      相关资源
      最近更新 更多