在Selenium中的同一会话中的几个New Tab中打开几个URL

时间:2017-12-27 02:41:56

标签: javascript java selenium

我需要导航到几个网址(通过Firefox)。我想在不同的选项卡中打开每个URL(但不是在不同的窗口中)。我在SO上读过许多类似的问题 - 在某些时候似乎唯一有效的建议是:

((JavascriptExecutor) driver).executeScript("window.open(arguments[0])", url);

然而,这并不是所有时间都有效 - 有时它会在新窗口中打开链接而不是新标签。

我认为这可能与我使用的特定Firefox配置有关,但更改browser.link.open_newwindow.override.external(至3)的值似乎无法解决问题。

为了更加清晰,我不是在谈论在新标签页面上打开链接(我知道这将在stackoverflow上的其他主题中讨论)我正在谈论直接导航到几个网址在新标签中。

那么如何让Firefox在新标签中打开网址?

1 个答案:

答案 0 :(得分:2)

在当前会话中打开新标签的确切java解决方案在

之下
((JavascriptExecutor)driver).executeScript("window.open('http://www.amazon.com');");

它会自动切换到新的标签句柄。如果要在标签驱动程序句柄之间切换,请执行此操作。

String mainWindowHandler = driver.getWindowHandle();

for(String winHandle : driver.getWindowHandles()){
    driver.switchTo().window(winHandle);
}

编辑:如果您使用网址作为变量,请使用以下代码

 String url = "http://www.amazon.com/";
((JavascriptExecutor)driver).executeScript("window.open('" + url + "');");