如何在页面对象模型中传递相同的驱动程序实例?

时间:2015-10-13 11:01:22

标签: selenium testng pageobjects

我的自动化框架使用的是selenium + TestNG + PageObject模型。

结构: enter image description here

My Testng课程/测试用例:

enter image description here

nullpointer错误

enter image description here

如何将驱动程序实例传递给我的页面对象?

2 个答案:

答案 0 :(得分:1)

我可以看到你在@BeforeTest方法中声明了一个新的WebDriver实例。您需要使用在@BeforeTest之外声明的WebDriver实例,即您已经声明了

 static WebDriver driver;

driver内使用相同的@BeforeTest。所以在before方法中,不要像WebDriver driver = new FirefoxDriver();那样写driver = new FirefoxDriver();

对其他浏览器类型(即safari,chrome)执行相同操作。

对于页面对象类,您可以执行以下操作:

public class TaxPage {

    public static WebDriver driver;

    public TaxPage(WebDriver driver) {
        this.driver = driver;
    }

}

答案 1 :(得分:0)

创建如下所示的类,并在参数化构造函数中传递WebDriver,并在需要时调用Page.driver之类的调用驱动程序

  public class Page 
    {
        public static WebDriver driver;

        public Page(WebDriver driver)
        {
            Page.driver = driver;
        }
    }

希望它会对你有所帮助:)。