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

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;
    }

}