调用第二个方法

时间:2018-06-02 07:59:55

标签: java selenium nullpointerexception

主程序

public class signin{

    public static void main(String[] args) throws Exception {

    util.OpenBrowser();

    b.closebrowser();


}

第一种方法在类util中:openbrowser是一种方法

public class util{

public static WebDriver OpenBrowser(){

    System.setProperty("webdriver.chrome.driver", 
                       "D:\\Selenium\\selenium3.1\\chromedriver.exe");

    driver = new ChromeDriver();

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

    driver.get("https://www.google.com/");
    return driver;

}

第二种方法(closebrowser)在另一个类b

public class b  {


    static WebDriver driver;

    public static void Execute(WebDriver driver){
        homepage.phonenumber(driver).sendKeys(constant.Phonenumber);
        homepage.proceedbutton(driver).click();
    }


     public static void closebrowser(){ 
        driver.close();
     }

}

我试图在另一个类中调用两个不同类的方法 我得到空指针异常并将该行指向closebroweser方法。为什么在调用第二个方法时出现空指针异常?

closebrowser方法仅在我不从不同类调用openbrowser方法时才起作用。如果我在主程序中编写openbrowser代码,它就可以工作了。

1 个答案:

答案 0 :(得分:0)

似乎你错过了b级的驱动程序实例化。您应该将方法添加到类b以设置实例化驱动程序。并在方法main中调用它。

public class b  {
    static WebDriver driver;

    public static void setDriver( WebDriver driver){
        b.driver = driver;
    }

    public static void Execute(WebDriver driver){

        homepage.phonenumber(driver).sendKeys(constant.Phonenumber);
        homepage.proceedbutton(driver).click();

    }


    public static void closebrowser(){  
        driver.close();         
    }
}

调用方法setDriver:

public static void main(String[] args) throws Exception {
    WebDriver driver = util.OpenBrowser();
    b.setDriver(driver);
    b.closebrowser();
}