-1

我在 Java 中使用 Selenium + TestNG 进行 Web 自动化。目前我已经设置了我的自动化,这样我就有了一个静态 Web 驱动程序,并且每次调用 webdriver 都会返回相同的浏览器实例。

虽然这对我来说更容易开发不同的模块(无需传递对象),但现在我在尝试并行运行 TC 时遇到了问题。

我想知道是否有任何方法可以为每个测试用例创建一个 webdriver,并在同一个测试用例中使用相同的 webdriver,而无需将该对象实际传递给各个模块?

例如:我有测试用例 TC1 ,测试用例 TC2

我有模块 1 、 2 、 3 ,它们都被 TC1 和 TC2 调用。我需要创建两个 webdriver 对象 W1 和 W2,以便 TC1 中的所有方法都使用 W1,而 TC2 中的所有方法都使用 W2,而无需我将 W1 和 W2 显式传递给所有模块。

谢谢你

4

2 回答 2

0

一种方法是将 webdriver 实例创建为ThreadLocal对象。这样,您的实例将在您的线程中是全局的,并且仅对由于并行运行而触发的线程是局部的。

于 2013-02-13T09:38:24.750 回答
0
  • 使用非静态 webdriver 对象初始化创建一个基类。
  • 在您的测试类中扩展上述 BaseClass。
  • 根据您需要初始化 webdriver 对象的步骤,使用 @Before 和 @After 注释来初始化和退出基类中的驱动程序对象。
于 2013-02-13T09:39:37.340 回答