javascript - 在 Selenium 的同一 session 中的多个新选项卡中打开多个 URL

标签 javascript java selenium

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

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

但是,这并不总是有效 - 有时它会在新窗口而不是新选项卡中打开链接。

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

为了更加清楚起见,我不是在谈论在新选项卡中打开网页上的链接(我知道这在 stackoverflow 上的其他线程中讨论过),而是在谈论直接导航到新选项卡中的多个网址。

那么如何让 Firefox 在新选项卡中打开网址呢?

最佳答案

在当前 session 中打开新选项卡的确切java解决方案如下

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

它将自动切换到新的选项卡句柄。如果您想在选项卡驱动程序句柄之间切换,请实现此功能。

String mainWindowHandler = driver.getWindowHandle();

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

编辑:如果您使用 url 作为变量,则使用以下代码

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

关于javascript - 在 Selenium 的同一 session 中的多个新选项卡中打开多个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47985698/

相关文章:

javascript - 在 Google map 上应用 “long touch” 事件处理程序

javascript - 在javascript中优化给定的正则表达式

java - 在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?

java - 当对象持有对正在运行的线程的引用时,该对象是否有资格进行垃圾回收?

node.js - 使用 selenium webdriver 和 Node js 进行测试自动化的 chromedriver 中的拖放功能不起作用

eclipse - 如何使用 eclipse 在 testng 中设置 sysproperty?

JavaScript表单验证函数: Looping each item

javascript - 使用 JavaScript 解析 JSON 以构建 HTML 字符串

Java删除文本文件中的空行

java - 无法单击日期选择器按钮来使用 appium 和 java 更改日期