0

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

  • 铬驱动程序:2.34

  • 壁虎司机:0.19.1

提前谢谢了。

贝斯问候,

萨莱

4

3 回答 3

4

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

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/')
于 2019-08-20T08:34:49.610 回答
1

使用 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();
于 2018-01-12T12:33:18.443 回答
1
  • 要打开New Blank TABin Firefox//您可以使用以下代码块ChromeInternet Explorer

    ((JavascriptExecutor) driver).executeScript("window.open('','_blank');");
    
  • 要打开URL http://localhost:8080/games.html#machinein a New TABthrough Firefox//您可以使用以下代码块ChromeInternet Explorer

    ((JavascriptExecutor) driver).executeScript("window.open('http://localhost:8080/games.html#machine');");
    
于 2018-01-12T11:59:25.380 回答