Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在使用TestNG进行Selenium测试期间关闭打开的驱动程序_Java_Selenium_Grid_Hudson_Testng - Fatal编程技术网

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

Java 如何在使用TestNG进行Selenium测试期间关闭打开的驱动程序,java,selenium,grid,hudson,testng,Java,Selenium,Grid,Hudson,Testng,我有一个Selenium项目,在本地机器上运行良好,但在Hudson运行时出现问题。问题是它不会在每次测试结束时关闭打开的驱动程序 先决条件:该项目由Hudson在Selenium网格服务器上运行。(我也在Selenium网格服务器上的本地计算机上运行了它,但问题没有发生) 因此,我有一个BeforeAndAfter类,它由每个测试类实现 在BeforeAndAfter中,我有一个@BeforeClass方法,它启动一个新的驱动程序: 驱动程序=新的RemoteWebDriver(新的URL,能

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

先决条件:该项目由Hudson在Selenium网格服务器上运行。(我也在Selenium网格服务器上的本地计算机上运行了它,但问题没有发生)

因此,我有一个BeforeAndAfter类,它由每个测试类实现

在BeforeAndAfter中,我有一个@BeforeClass方法,它启动一个新的驱动程序: 驱动程序=新的RemoteWebDriver(新的URL,能力); 以及一个@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)


此外,在我们的项目中,我们创建了批处理文件,以在任何测试类完成后终止进程。就像任何IEdriver.exe或firefox.exe正在运行一样,您可以使用windows commads强制杀死它。请确保在下一个测试类开始之前,通过在Setup fixture方法中调用批处理来执行此操作。

您是否并行运行?您好,否,它被迫按顺序运行。我观察到,即使我在每个类的最后一个方法末尾指定,它也不会退出驱动程序……您可以共享驱动程序初始化和拆卸代码吗?很好的解决方案,不幸的是,Hudson从一台不懂taskkill命令的Unix机器加载测试。虽然测试在Windows计算机上运行(unix计算机连接到网格服务器,然后测试在Windows节点上运行),但我不知道是否可以终止远程进程。正如我所说的,创建一个批处理并使用测试代码或JAR/包将其复制到远程计算机。下一步就是在测试代码中调用远程机器上的这个批处理。我们用詹金斯来执行死刑,所以我们实现了同样的事情。