页面对象错误(java.lang.NullPointerException)

Page Objects erro (java.lang.NullPointerException)

我做了一个基本项目,使用带有 java 和 Junit 的 selenium WebDriver 来训练页面对象。所以,我也制作了一个页面对象 class 和 Junit class。我调用方法并将参数传递给方法,但是日食显示一条消息:java.lang.NullPointerException

public class LogarBkoMaisPage {

static WebDriver driver;

 By campoNome = By.id("matricula_I");
 By campoSenha = By.id("senha_I");
 By btnLogin      = By.id("bt_entrar");

public LogarBkoMaisPage(WebDriver driver) {
    this.driver = driver;
}
public void logar(String usuario, String senha) {
    driver.findElement(campoNome).sendKeys(usuario);
    driver.findElement(campoSenha).sendKeys(senha);
    driver.findElement(btnLogin).click();
}
}

public class LogarBkoMaisTest {

static WebDriver driver;

@Before
public void setUp() throws Exception {  
    SelecionarNavegador nav = new SelecionarNavegador();
    nav.iniciarNavegador("ie","http://10.5.9.45/BkoMais_Selenium/");
}
@Test
public void logarAplicacao() {      
    try {
        LogarBkoMaisPage login = new LogarBkoMaisPage(driver);
        login.logar("844502","Bcc201707");
    }catch(Exception e) {
        System.out.println("Mensagem de erro: " +e);
    }
}
@After
public void tearDown() throws Exception {
}
}

public class SelecionarNavegador {

static WebDriver driver;

public static WebDriver iniciarNavegador(String nomeNavegador, String url) {

    if(nomeNavegador.equalsIgnoreCase("firefox")) {
        System.setProperty("webdriver.gecko.driver", "E:\workspace_BCC_QA_BKOMAIS\"
                + "FireFoxGeckodriver64\geckodriver.exe");
        driver = new FirefoxDriver();
    }
    else if(nomeNavegador.equalsIgnoreCase("chrome")){
        System.setProperty("webdriver.chrome.driver", "E:\workspace_BCC_QA_BKOMAIS"
                + "\chromedriver_win32\chromedriver.exe");
        driver = new ChromeDriver();    
    }else if(nomeNavegador.equalsIgnoreCase("IE")) {
        System.setProperty("webdriver.ie.driver", "E:\workspace_BCC_QA_BKOMAIS"
                + "\IE Plugin\IEDriverServer.exe");
        driver = new InternetExplorerDriver();
    }
    driver.manage().window().maximize();
    driver.get(url);
    return driver;
}
}

异常:

你得到一个空指针异常,因为 SelecionarNavegador class 中的 iniciarNavegador 方法是初始化驱动程序的方法,它 returns driver必须分配给变量。您需要在 setUp() 方法

中执行此操作
@Before
public void setUp() throws Exception {  
    SelecionarNavegador nav = new SelecionarNavegador();
    driver=nav.iniciarNavegador("ie","http://10.5.9.45/BkoMais_Selenium/");
}