Java 如何在使用TestNG进行Selenium测试期间关闭打开的驱动程序
我有一个Selenium项目,在本地机器上运行良好,但在Hudson运行时出现问题。问题是它不会在每次测试结束时关闭打开的驱动程序 先决条件:该项目由Hudson在Selenium网格服务器上运行。(我也在Selenium网格服务器上的本地计算机上运行了它,但问题没有发生) 因此,我有一个BeforeAndAfter类,它由每个测试类实现 在BeforeAndAfter中,我有一个@BeforeClass方法,它启动一个新的驱动程序: 驱动程序=新的RemoteWebDriver(新的URL,能力); 以及一个@AfterClass方法,该方法执行driver.quit() 每次我在远程Selenium Grid服务器上运行testNG.xml文件时,它都会为每个测试类打开一个驱动程序,但它会一直保持打开状态,直到最后一次测试结束时关闭所有驱动程序(所有浏览器窗口) 我的testNG文件如下所示:Java 如何在使用TestNG进行Selenium测试期间关闭打开的驱动程序,java,selenium,grid,hudson,testng,Java,Selenium,Grid,Hudson,Testng,我有一个Selenium项目,在本地机器上运行良好,但在Hudson运行时出现问题。问题是它不会在每次测试结束时关闭打开的驱动程序 先决条件:该项目由Hudson在Selenium网格服务器上运行。(我也在Selenium网格服务器上的本地计算机上运行了它,但问题没有发生) 因此,我有一个BeforeAndAfter类,它由每个测试类实现 在BeforeAndAfter中,我有一个@BeforeClass方法,它启动一个新的驱动程序: 驱动程序=新的RemoteWebDriver(新的URL,能
<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)
此外,在我们的项目中,我们创建了批处理文件,以在任何测试类完成后终止进程。就像任何IEdriver.exe或firefox.exe正在运行一样,您可以使用windows commads强制杀死它。请确保在下一个测试类开始之前,通过在Setup fixture方法中调用批处理来执行此操作。您是否并行运行?您好,否,它被迫按顺序运行。我观察到,即使我在每个类的最后一个方法末尾指定,它也不会退出驱动程序……您可以共享驱动程序初始化和拆卸代码吗?很好的解决方案,不幸的是,Hudson从一台不懂taskkill命令的Unix机器加载测试。虽然测试在Windows计算机上运行(unix计算机连接到网格服务器,然后测试在Windows节点上运行),但我不知道是否可以终止远程进程。正如我所说的,创建一个批处理并使用测试代码或JAR/包将其复制到远程计算机。下一步就是在测试代码中调用远程机器上的这个批处理。我们用詹金斯来执行死刑,所以我们实现了同样的事情。