每个类的Java + Selenium对象

时间:2013-02-12 19:57:50

标签: java selenium testng selenium-webdriver

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

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

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

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

我有模块1,2,3,它们都由TC1和TC2调用。我需要创建两个webdriver对象W1和W2,这样TC1中的所有方法都使用W1,而TC2中的所有方法都使用W2,而我没有明确地将W1和W2传递给所有模块。

谢谢

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

  • 使用非静态webdriver对象初始化创建基类。
  • 在您的测试类中扩展所述BaseClass。
  • 根据您需要初始化webdriver对象的步骤,使用@Before和@After注释初始化和退出基类中的驱动程序对象。