如何在使用TestNG的Selenium测试期间关闭打开的驱动程序

我有一个Selenium项目,它在我的本地机器上运行良好,但在由Hudson运行时出现问题。 问题是它没有在每次测试结束时关闭打开的驱动程序。

先决条件:该项目由Hudson在Selenium网格服务器上运行。 (我也在Selenium网格服务器的本地机器上运行它,并且不会出现问题)

所以,我有一个由每个测试类实现的BeforeAndAfter类。

在BeforeAnd内我有一个@BeforeClass方法,它启动一个新的驱动程序:driver = new RemoteWebDriver(new URL(url),capability); 和一个@AfterClass方法,它执行driver.quit();

每次我在远程Selenium Grid服务器上运行testNG.xml文件时,它会为每个测试类打开一个驱动程序,但它会保持打开状态,直到它关闭所有驱动程序(所有浏览器窗口)

我的testNG文件如下所示:

<parameter name="browser" value="firefox"/>
<parameter name="url" value="http://10.32.999.99:999/wd/hub"/>


<test name="Regression on test grid">
    <classes>          
        <class name="tests.PageTests.ArticlesPageTest"/>
         <class name="tests.PageTests.CuratorsPageTest"/>
         <class name="tests.FlowTests.NavigateThroughFindings"/>
        <class name="tests.PageTests.DiffToolTest"/>
        <class name="tests.PageTests.ReportsAdminTest"/>           
    </classes>
</test>

对这个问题有什么想法?

PS:事实上,问题在于每个测试类释放内存后,@AfterClass方法都没有关闭驱动程序。


在testNG的情况下,你可以使用@AfterClass(alwaysRun = true)。

另外,在我们的项目中,我们已经创建了批处理文件,以便在任何测试类complition之后终止进程。 如果有任何IEdriver.exe或firefox.exe正在运行,则强制使用Windows commads杀死它。确保在下一个测试课程开始前通过在Setup fixture方法中调用批处理来执行此操作。

链接地址: http://www.djcxy.com/p/50687.html

上一篇: How can I close opened drivers during Selenium tests with TestNG

下一篇: Headless Browser and scraping