异步运行selenium webdriver的多个实例(firefox)

时间:2014-06-27 17:07:37

标签: javascript node.js selenium selenium-webdriver

如何同时让我的webdriver请求多个页面(或打开多个浏览器)?

我在互联网上找到的所有解决方案都会等到上一个会话加载完毕后再打开一个新的浏览器实例。

我尝试过selenium-webdriver,webdriverjs和wdjs,但它们似乎都不能异步地为不同的页面做多个http请求。即使像这样的解决方案https://github.com/OniOni/wd-parallel-async也不行。他们都打开了一个。

我错过了什么吗?

PS:我不想同时运行多个浏览器!我想运行同一浏览器的多个实例。

2 个答案:

答案 0 :(得分:2)

类似的东西:

WebDriver driver1 = new FirefoxDriver();
WebDriver driver2 = new FirefoxDriver();
WebDriver driver3 = new FirefoxDriver();
driver1.get("page1");
driver2.get("page2");
driver3.get("page3");

如果您需要它真正异步,那么您将需要进入Java线程...这将使这成为更长的讨论和SO的偏离主题。

答案 1 :(得分:1)

利用线程。我看到你有node.js标记...我不熟悉它,但下面是一个有效的c#例子......类似的理论应该适用。 C#

    Parallel.Invoke(
        ()=> { 1st test execution call },
        ()=> { 2nd test execution call },
        ()=> { 3rd test execution call }
    );

虽然小心,因为webdriver有时会混淆并重叠窗口。我发现在一台机器上一次超过5个会导致各种问题。如果您在c#中使用Parallel.Invoke,您可以将此限制为仅允许一次允许某个数字...虽然Grid是最好的方法,因为您在配置中设置限制然后为您负载均衡