主程序
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代码,它就可以工作了。
答案 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();
}