如何在selenium框架中跨越不同的类传递相同的浏览器实例

时间:2015-07-04 03:51:56

标签: java selenium

我对目前正在工作的硒框架有一个基本的疑问。 我有一个初始化chrome驱动程序的驱动程序类。

 public class page1 {

            private static  WebDriver driver;
            protected static String WINDOWS_DRIVER = "/chromedriver/windows/chromedriver.exe";
            public static WebDriver initi(){
            if(driver == null){
                System.setProperty("webdriver.chrome.driver",page1.class.getResource(WINDOWS_DRIVER).getFile());
                DesiredCapabilities capabilities = DesiredCapabilities.chrome();
                ChromeOptions options = new ChromeOptions();
                options.addArguments("test-type");
                options.addArguments("--start-maximized");
                options.addArguments("--ignore-certificate-errors");
                capabilities.setCapability(ChromeOptions.CAPABILITY, options);
                driver=new ChromeDriver(capabilities);

        }

        return driver;
    }
}

我有2个类扩展了驱动程序类。

    public class page2 extends page1 {
    public WebDriver driver;

    public void testmethod1(){
        driver=super.initi();
        driver.navigate().to("https://www.google.co.in/");
    }
}

    public class page3 extends page1 {

    public WebDriver driver;
    public void testmethod2(){
        driver=super.initi();
        driver.navigate().to("https://in.yahoo.com/?p=us");
    }
}

最后,我有一个testsuite类,我想创建一个浏览器实例并调用所有3个类的方法。

    public class finalclass extends page1{

    public page2 _page2;
    public page3 _page3;

    public WebDriver driver;

    @Test
    public void finaltest(){

        driver=super.initi();
        driver.get("http://www.rediff.com/");
        _page2.testmethod1();
        _page3.testmethod2();

    }
}

在函数调用中抛出空指针异常错误。你能帮忙吗?

1 个答案:

答案 0 :(得分:0)

  • page1类中创建一个构造函数并在那里实例化驱动程序。
  • 继承后,不要在每个类中实例化驱动程序。而是使用继承的。

查看示例here