当前位置: 首页 > 知识库问答 >
问题:

并行测试执行-Testng监听器,Selenium Web驱动程序切换到Selenium网格

罗梓
2023-03-14

我有一个特殊的情况。我有一个用java(selenium webdriver)编写的web应用程序测试,这些测试是用testng并行组织和执行的。过程如下所示:

  • 每个testng测试(不是测试方法)都是并行运行的

我现在尝试在Selenium网格上运行这个套件。我面临的问题是,在完成测试后,webdriver实例会保持在Selenium网格中活动,并阻止下一个测试的执行,直到超时开始并终止测试。我猜问题在于通过测试侦听器处理webdriver,并在测试方法之间共享一个驱动程序。

我这么做只是因为我想在每次测试之前和之后节省一些打开和关闭webdriver的时间。

我的问题是:有人知道在使用硒网格时这种行为是否可能发生吗?如果是,应该如何处理?那么,有没有人有这种情况,他正在使用网格,他有共享网络驱动程序的测试方法,一切都正常工作?如果是,我想听听你是如何实现的。

提前谢谢大家!卢卡

编辑:TestListener代码

public class WebDriverTestListener extends TestListenerAdapter {

@Override
public void onStart(ITestContext testContext) {
    super.onStart(testContext);
    DesiredCapabilities capabilities = DesiredCapabilities.firefox();
    WebDriver driver = null;
    try {
        driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabilities);
    } catch (MalformedURLException e) {
        e.printStackTrace();
    }
    testContext.setAttribute("webdriver", driver);      
}

@Override
public void onFinish(ITestContext testContext) {
    super.onFinish(testContext);
    WebDriver driver = (WebDriver) testContext.getAttribute("webdriver");
    driver.close();
}

}

共有1个答案

蔚学林
2023-03-14

问题在于onFinish方法。我用过司机。close()不会终止webdriver实例,只会关闭当前活动的窗口。而不是司机。close(),应该用于驱动程序。退出()。在这个改变之后,一切都正常工作。

 类似资料:
  • 我一个类有5到6个方法,想在不同的节点上并行运行方法,我有网格2设置,里面有4个节点。 下面是我的测试。xml 我有一个测试工具,它初始化了login、common和utils类 在我的测试类中,我扩展了测试工具,在@Beforemethod中,我调用了inilze方法 如果我运行测试,我会看到以下问题 两个浏览器在每个节点中打开一个,但只有一个浏览器启动应用程序,另一个不启动。 如果我遗漏了什么

  • 我想在TestNg中并行运行硒测试,使用“数据提供者”。理想情况下,测试是按方法并行的(一个测试=一个方法),而不是简单的浏览器套件并行。我在某个地方读到过,一次可以控制大约5个ChromeDriver实例,所以我认为这应该是可能的。稍后,我计划转移到grid2。对于开发,我将通过右键单击XML配置文件上的运行来运行IntelliJ idea测试运行程序。 我在并行运行测试时遇到了问题(在grid

  • 问题内容: 我想在TestNg中使用@dataprovider并行运行selenium测试。理想情况下,测试是按方法并行的(一种测试=一种方法),而不是浏览器的简单套件并行性。我读过某个地方的内容,一次可以控制大约5个ChromeDriver实例,因此我认为应该可以实现。稍后,我计划移至grid2。为了进行开发,我通过右键单击+在XML配置文件上运行,使用IntelliJ Idea测试运行器运行事

  • 类TestParallel.FirstTestClass线程ID:22名称:TestNG 类TestParallel.SecondTestClass线程ID:23名称:TestNG 类TestParallel.TestSetup线程ID:23名称:TestNG java.lang.NullPoInterException位于TestParallel.TestSetup.OnTestFailure(

  • 我使用TestNG Selenium(ChromeWebDriver)并行执行测试时遇到了一些问题。基本上,我的测试实际上看起来并不是真正并行执行的。 尝试实现:从Excel电子表格读取数据。TestSuite中的所有测试用例。java应该在单独的WebDriver实例中对每一行数据执行——并行运行。例如,在单独的浏览器窗口中同时测试5个单独的登录/密码组合。 简图: TestNG。xml: 输出

  • 为什么命令不会显示在我的上?每次我在test中输入Selenium Web驱动程序命令时,它与其他使用- 驱动程序的下拉列表。没有出现,只显示它是一个班...有什么建议吗?