1

我需要一次打开 50 到 100 个 URL 并验证每个 URL 的登录名。所有 URL 都属于同一个应用程序,但托管给不同的客户?我如何使用 Selenium WebDriver 打开多个浏览器,比如 20 到 50 个具有不同 URL 的浏览器?我尝试了将 Parallel 属性设置为“Tests”并在 @BeforeTest 中实例化驱动程序对象的 TestNG,但是在打开 2 个浏览器后,由于浏览器关闭或第三个浏览器死亡,因此出现硒异常。

下面找到代码。

@Test
@Parameters({ "url" })
public void testParallel(String url) throws Exception {

    try {
        driver.get(url);

        int i = 0;
        i++;
        System.out.println("Browser Count" + i);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
4

3 回答 3

3

我认为不可能使用 Java 绑定在同一台机器上并行使用多个 IEDriver 实例。(记得在某处阅读。.NET 绑定支持并行 IE 实例)

根据 IEDriver 的官方文档,“与其他 WebDriver 类不同,对于某些语言绑定,一次应该只有一个 InternetExplorerDriver 实例。如果您需要一次运行多个 InternetExplorerDriver 实例,请考虑使用 RemoteWebDriver和虚拟机。”。参考这里

如果您的 testng xml 正确,这应该适用于 FirefoxDriver。或者如果你想在 IE 上使用它,那么你应该考虑设置一个网格并在不同的机器上启动 IE 节点,以便可以发生并行运行。

于 2012-05-27T13:45:36.433 回答
0

为什么你需要一次打开它们?Selenium 不是为负载测试而设计的。如果你想检查你的应用程序或服务器在负载下的表现,你最好看看JMeter

于 2012-05-27T10:46:17.897 回答
0

对于这样的测试,我建议不要使用浏览器本身,而是使用 HTMLUnit 驱动程序(类似于无头浏览器)。此外,还有一个叫做 GhostDriver 的东西也可以完成类似的工作。不过,您可能应该使用远程 Grid 节点+集线器,但您不需要为了实现您的目标。

Selenium 可以在这方面进行负载测试。另外,我不会使用 TestNG:相反,我会使用 Gradle 或 Maven,因为它们本身具有 JUnit 分叉多线程功能。在 Gradle 或 Maven 中,创建一个过滤和识别特定测试类的任务,然后分叉进程以多线程运行它们。 我在这里创建了一个示例。

于 2013-02-27T23:09:43.553 回答