如何在页面对象模型中传递相同的驱动程序实例?
How to pass the same driver instance in page Object model?
我的自动化框架使用 selenium + TestNG + PageObject 模型。
结构:
我的Testng class/测试用例:
空指针错误
如何将驱动程序实例传递到我的页面对象中?
像下面这样创建一个 class 并在参数化构造函数中传递 WebDriver 并在需要时像 Page.driver
一样调用驱动程序
public class Page
{
public static WebDriver driver;
public Page(WebDriver driver)
{
Page.driver = driver;
}
}
希望对您有所帮助:)
我可以看到您在 @BeforeTest
方法中声明了一个新的 WebDriver 实例。您需要使用在 @BeforeTest
之外声明的 WebDriver 实例,即您已经声明了
static WebDriver driver;
在 @BeforeTest
中使用相同的 driver
。所以在 before 方法中,不要像 WebDriver driver = new FirefoxDriver();
那样写 driver = new FirefoxDriver();
对其他浏览器类型(即 safari,chrome)执行相同操作。
对于您的页面对象 类,您可以执行以下操作:
public class TaxPage {
public static WebDriver driver;
public TaxPage(WebDriver driver) {
this.driver = driver;
}
}
我的自动化框架使用 selenium + TestNG + PageObject 模型。
结构:
我的Testng class/测试用例:
空指针错误
如何将驱动程序实例传递到我的页面对象中?
像下面这样创建一个 class 并在参数化构造函数中传递 WebDriver 并在需要时像 Page.driver
一样调用驱动程序
public class Page
{
public static WebDriver driver;
public Page(WebDriver driver)
{
Page.driver = driver;
}
}
希望对您有所帮助:)
我可以看到您在 @BeforeTest
方法中声明了一个新的 WebDriver 实例。您需要使用在 @BeforeTest
之外声明的 WebDriver 实例,即您已经声明了
static WebDriver driver;
在 @BeforeTest
中使用相同的 driver
。所以在 before 方法中,不要像 WebDriver driver = new FirefoxDriver();
那样写 driver = new FirefoxDriver();
对其他浏览器类型(即 safari,chrome)执行相同操作。
对于您的页面对象 类,您可以执行以下操作:
public class TaxPage {
public static WebDriver driver;
public TaxPage(WebDriver driver) {
this.driver = driver;
}
}