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

标签 java selenium webdriver 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 对象似乎为空,这就是我在控制台中得到的结果。

这是一个棘手的问题,因为我不希望我的测试与特定驱动程序绑定(bind)。要么是我没有正确传递对象,要么是我不理解 TestNG 工厂的某些内容。任何意见将不胜感激。

最佳答案

您可以尝试将 webdriver 声明为静态吗?

静态WebDriver驱动程序;

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

关于java - 无法将 WebDriver 对象传递给 TestNG 中的工厂方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29998653/

相关文章:

selenium - Sikuli,当我从开发机器运行它时,在 Jenkins : Allow the browser to be launched in the foreground, 上进行 Selenium 测试?

java - 如何将 log4j 配置设置为项目的依赖项?

Java 8. 使用收集器将值列表分组到范围列表中

javascript - 如何获取完整页面加载的传输大小?

c# - 使用 Webdriver 使用 Selenium 超时的最佳方法是什么

selenium - 是否有任何框架支持带有驱动程序管理的 selenium-webdriver 的行为驱动方法(bdd)?

java - 如何访问我的方法 (Java)?

java - 如何在 java MessageDialog.openQuestion 中设置默认回答按钮?

css - 如何编写 XPath 或 CSS 表达式?

java - 捕获网络驱动程序断开连接问题并处理额外的 Activity