当前位置: 首页 > 知识库问答 >
问题:

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

翟泰
2023-03-14

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

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

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

在BeforeAndAfter中,我有一个@BeforeClass方法来启动一个新的驱动程序:driver=newremotewebdriver(newurl(URL),capability);还有一个@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方法在每个测试类释放内存后都没有关闭驱动程序。

共有1个答案

谢财
2023-03-14

在测试NG的情况下,您可以使用@AfterClass(alwaysRun=true)。

此外,在我们的项目中,我们创建了批处理文件来杀死任何测试类兼容后的进程。就像如果任何IEdriver.exe或firefox.exe正在运行,你可以使用windows逗号强制杀死它。请确保您在下一个测试类开始之前通过调用安装夹具方法中的批处理来做到这一点。

 类似资料:
  • 问题内容: 我需要使用Java中的Selenium chrome驱动程序进行测试。但是chrome窗口不应该打开。假设这是一种产品,则不应打开任何窗口。 我也看过这个; 是否可以在SeleniumRC中隐藏浏览器? 但是对我来说没有解决办法。测试应该独立于操作系统,并且我尝试使用HtmlUnitDriver进行测试而没有打开任何窗口,但是它存在一些问题。当按ID查找组件时,可能无法按ID查找组件。

  • 我想在TestNg中并行运行硒测试,使用“数据提供者”。理想情况下,测试是按方法并行的(一个测试=一个方法),而不是简单的浏览器套件并行。我在某个地方读到过,一次可以控制大约5个ChromeDriver实例,所以我认为这应该是可能的。稍后,我计划转移到grid2。对于开发,我将通过右键单击XML配置文件上的运行来运行IntelliJ idea测试运行程序。 我在并行运行测试时遇到了问题(在grid

  • 我正试图从一个网站上抓取数据,有一个url可以让我进入一个特定的页面,我们有一些项目的链接,如果我点击这些链接,它会在一个新的选项卡中打开,我可以从那里提取数据, 但是在提取数据之后,我想关闭选项卡返回主页并单击另一个链接。 我正在使用selenium和chrome web驱动程序。我尝试了以下代码: 如何关闭使用硒和python新建的标签?

  • 我们如何使用Testng在硒网络驱动程序中选择下拉值?

  • 问题内容: 我需要使用Java中的Selenium chrome驱动程序进行测试。但是不应打开Chrome窗口。假设这是一种产品,则不应打开任何窗口。 我也看过这个; 是否可以在SeleniumRC中隐藏浏览器? 但是对我来说没有解决方案。测试应该独立于操作系统,并且我尝试使用HtmlUnitDriver进行测试而没有打开任何窗口,但是它存在一些问题。当按ID查找组件时,可能无法按ID查找组件。某

  • 问题内容: 首先,对不起我的英语,它不是那么完美:) 因此,我面临以下问题:我正在尝试使用Selenium Grid和TestNg在不同的浏览器中运行并行测试,并在@BeforeTest方法中传递参数。我的问题是,在初始化每个测试时,似乎它们将使用最后一个测试的参数。因此,在此示例中,当我运行测试时,它将打开两个Chrome,而不是一个Firefox和一个Chrome。 (browser.getD