无法将 WebDriver 对象传递给 TestNG 中的工厂方法

Unable to pass WebDriver object to factory method in TestNG

祝你一切顺利。

我仍然对 Selenium 和 TestNG 感到满意(总体上 Java),并且我刚刚开始接触一些更有趣的东西。我正在尝试使用工厂动态创建测试,但我无法让工厂接受指向 WebDriver 对象的变量。考虑:

import org.testng.annotations.*;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class SimpleFactory {
  WebDriver driver;
  String hello = "hello";
  @BeforeSuite
  public void setup(){
    driver = new FirefoxDriver();
  }

  @AfterSuite
  public void teardown(){
    driver.quit();
  }

  @Factory
  public Object[] factoryMethod(){
    System.out.println(driver);
    System.out.println(hello);
    return new Object[] { new TestClass(), new TestClass() };

  }
}

这将转换并创建一个 WebDriver 对象 "driver" 以及一个字符串 "hello." 当它到达工厂时,将创建 TestClass 对象并正确 运行 并且系统打印出来变量指向的字符串。但是,WebDriver 对象似乎为空,这就是我在控制台中得到的结果。

这是一个棘手的问题,因为我不希望我的测试与特定的驱动程序相关联。要么是我没有正确传递对象,要么是我对 TestNG 工厂有些不了解。任何输入将不胜感激。

您能否尝试将 webdriver 声明为静态的..

静态 WebDriver 驱动程序;

谢谢, 穆拉利 http://seleniumtrainer.com/