Selenium Grid会话无法自动关闭并且在运行几次后变得无响应

问题描述 投票:0回答:1

我不知道这是否是设计使然,只是注意到我像这样设置了testNG:

<suite name="Suite" parallel="classes" thread-count="4">
    <test name="Test">
        <classes>
            <class name="Test2"/>
            <class name="Test1"/>
            <class name="Test3"/>
            <class name="Test4"/>
        </classes>
    </test> <!-- Test -->
</suite> <!-- Suite -->

然后在我的测试中,

public class BaseTest {

    @AfterTest
    public void afterAll() {
        System.out.println("tear down webdriver here ");
        this.webDriver.quit();
    }
}

Test1到Test 4都扩展了此基础测试。

但是我注意到在启动具有两个节点的selenium hub的刷新后,前几次运行都很好,但是从控制台看,可用资源越来越少,运行几次后,就没有可用资源,所有测试都在等待。实际上,每次调用webdriver.quit()时,它仅关闭一个会话,而其他所有会话仍处于打开状态。

这使Selenium Grid解决方案一点都不优雅,我们不得不借用很多额外的解决方案,例如,每当我们开始新的测试工作时就重新启动Selenium Grid等。

因此,为什么driver.quit()无法关闭所有网格会话,而只能关闭一个会话?该驱动程序已经是singlton,并且已经在所有测试用例之间共享。

希望听到您对此的建议。

谢谢

selenium selenium-grid selenium-grid2
1个回答
1
投票
我相信您也必须研究以下实用程序。它可以根据所收到的请求动态地增加和减少节点。现在让我们来回答您的问题。根据您的问题,我能够理解webdriver实例是单例。问题是,如果您的主要目标是实现并行测试,则不要使您的webdriver单身。请也查看最佳做法。 https://docs.experitest.com/display/TE/Parallel+Tests+-+Best+Practices

https://github.com/frostyaxe/Talongrid/tree/master

© www.soinside.com 2019 - 2024. All rights reserved.