无法将 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/
祝你一切顺利。
我仍然对 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/