我有一个Selenium项目,它在我的本地机器上运行正常但在Hudson运行时有问题。问题是它不会在每次测试结束时关闭打开的驱动程序。
先决条件:此项目由Hudson在Selenium网格服务器上运行。 (我也在Selenium网格服务器上的本地机器上运行它,但问题不会发生)
所以,我有一个由每个测试类实现的BeforeAndAfter类。
在BeforeAnd之后我有一个@BeforeClass方法启动一个新的驱动程序: driver = new RemoteWebDriver(new URL(url),capability); 以及执行driver.quit();
的@AfterClass方法每次我在远程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方法在每个测试类释放内存后没有关闭驱动程序。
答案 0 :(得分:0)
如果是testNG,你可以使用@AfterClass(alwaysRun = true)。
此外,在我们的项目中,我们创建了批处理文件,以便在任何测试类complition之后终止进程。就像任何IEdriver.exe或firefox.exe正在运行一样,你强制使用windows commads杀死它。确保你在下一个测试类开始之前通过在Setup fixture方法中调用batch来执行它。