【问题标题】:Java + Selenium Object per Class每个类的 Java + Selenium 对象
【发布时间】:2013-02-12 19:57:50
【问题描述】:

我在 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 显式传递给所有模块。

谢谢

【问题讨论】:

  • 以上信息不足以解决您的问题。您能否发布 TC1 和 TC2 的代码以及它们如何调用模块 1,2 和 3。

标签: java selenium testng selenium-webdriver


【解决方案1】:

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

【讨论】:

    【解决方案2】:
    • 使用非静态 webdriver 对象初始化创建基类。
    • 将上述 BaseClass 扩展到您的测试类。
    • 根据您需要初始化 webdriver 对象的步骤,使用 @Before 和 @After 注释来初始化和退出基类中的驱动程序对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-03
      • 1970-01-01
      • 2015-04-09
      • 2011-12-01
      相关资源
      最近更新 更多