如何在使用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