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

我应该在TestNG中的BeforeClass或BeforeTest中启动WebDriver吗

祝高阳
2023-03-14

我仍在学习自动化测试,并且一直在研究一些测试框架。我发现有两种方法可以帮助人们启动WebDriver。

  1. 有些人在BeforeClass中启动它(使用TestNG),它使驱动程序在整个类测试中保持活动状态,包括许多测试用例
  2. 其他组在每个测试用例@test或@BeforeTest中启动WebDriver,以便它们可以为每个类创建新的WebDriver

我们需要在哪里启动WebDriver?非常感谢。

共有1个答案

白阳煦
2023-03-14

没有“正确的地方”这回事!

如果您从@BeforeClass启动驱动程序,则同一个浏览器将可用于该类中的每个测试,包括任何会话cookie和其他历史记录。每个测试都需要说明上一个测试将应用留在哪个状态。例如:最好在@BeforeTest中登录应用程序,然后在@AfterTest中退出应用程序。

如果您在测试前从@启动驱动程序,则每次测试都将启动一个干净的浏览器会话。这会更慢(因为每次测试都会启动浏览器),但会更干净,因为您不必担心上一次测试会让浏览器处于什么状态。

 类似资料:
  • 我们从官方的TestNG文档中了解到: 在调用当前类中的第一个测试方法之前,将运行带注释的方法。 将在运行属于标记中的类的任何测试方法之前运行带注释的方法。

  • 问题内容: 我们从TestNG官方文档中知道: 带注释的方法将在调用当前类中的第一个测试方法之前运行。 带注释的方法将在运行属于标签内部的类的任何测试方法之前运行。 上面的两个TestNG批注在功能上看起来都很相似。谁能解释这个独特的区别? 问题答案: SeleniumAbstractTest.class MyTestClass1.class MyTestClass2.class 如果您具有以下测

  • 我正在尝试使用testng.xml执行testcases。我已经将所有的测试运行类放在一个测试中。在执行时,我注意到第二类(仪表板类)的@beforeTest方法首先执行。我希望执行所有类的@beforeTest方法,以与testng.xml文件中的类相同的执行顺序执行。请看下面的图片。 对于我在提到的类中使用的所有@beforeTest和@beforeClass我都使用了waysrun=true

  • 我的问题是,就框架而言,我应该使用@beforemethod@beforetest@postertest这样的TestNG注释吗?或者在每个类中都有代码? 例如,为什么我要用这些@before注释调用firefox驱动程序?我可以理解,然后我可以重用代码,比如调用一个chrome驱动程序,但是大多数时候在chrome或其他浏览器上运行相同的测试需要一些修改才能通过,而且我可以复制整个代码。 那么,

  • 我有一个活动,它为结果启动了一些其他活动,所以当结果回来时,该活动可能已经或可能没有被销毁和重新创建。 我已经重写了onSaveInstanceState,以便添加需要保留和恢复的数据。 当活动被销毁并重新创建时,onCreate被传递给savedInstanceState包;但也调用并传递了相同的捆绑包onRestoreInstanceState()。 那么我应该把从捆绑包中提取数据并恢复状态的

  • 问题内容: 要使用Qt SDK在Linux中创建应用程序,应该在Linux中交叉编译应用程序还是在Windows中交叉编译应用程序? 问题答案: 您需要 在 Linux上 针对 Windows 进行交叉编译。 编辑: 在 Linux 上安装MinGW 。 *在 *Linux 上 交叉编译 您的Qt代码。应该生成Windows二进制文件( .exe )。 大功告成 使用Qt运行时库在任何Window