首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >通过Selenium WebDriver和JUnit在带注释的@AfterClass方法中调用driver.quit()时使用java.lang.NullPointerException

通过Selenium WebDriver和JUnit在带注释的@AfterClass方法中调用driver.quit()时使用java.lang.NullPointerException
EN

Stack Overflow用户
提问于 2018-06-09 01:52:42
回答 1查看 1.5K关注 0票数 0

我使用JUnit创建了一个测试,并在类@AfterClass中放置了driver.quit ()命令,以便在测试完成时关闭浏览器,但eclipse会显示java.lang.NullPointerException消息。

测试类填充了几个字段,然后在基础中进行查询,在Eclipse控制台中显示结果,并且应该关闭浏览器,但显示java.lang.NullPointerException消息。

下面是日志和测试脚本。

public class validarStatus {

private static WebDriver driver;

@Before
public void setUp() throws Exception {

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

}

@Test
public void validarStatusOs() throws InterruptedException {

    WebDriver driver = new ChromeDriver();
    driver.get("http://10.5.9.45/BKOMais_S86825EstrategiaBackOfficeClaroFixo");
    driver.manage().window().maximize();

    // Logar BkoMais
    driver.findElement(By.id("matricula_I")).sendKeys("844502");
    driver.findElement(By.id("senha_I")).sendKeys("Pw34Jdt#*");
    driver.findElement(By.id("bt_entrar")).click();

    // Logar na Estratégia
    driver.findElement(By.id("mn_backoffice")).click();
    driver.findElement(By.id("mn_bkoffice_prod_203")).click();// Produto
    driver.findElement(By.id("mn_bkoffice_est_57")).click();// Estratégia

    // Selecionado a atividade
    Select atividade = new Select(driver.findElement(By.id("cboAtividade")));
    atividade.selectByIndex(3);

    // Registro >> Novo
    Thread.sleep(500);
    driver.findElement(By.id("mn_registro")).click();
    driver.findElement(By.id("mn_novo_caso")).click();

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

    // Cod Os Estratégia VREL
    String CodOs = driver.findElement(By.xpath("//*[@id=\"content\"]/div[1]/fieldset[1]/div[2]/div[3]/span"))
            .getText();

    // Campo Análise de Contrato
    Select analiseContrato = new Select(driver.findElement(By.id("cboMotivo")));
    analiseContrato.selectByIndex(5);

    try {
        // Campo Ação
        Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
        acao.selectByIndex(3);

        // Status
        WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement ele = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("cboStatus")));
        String valorStatus = ele.getText();
        // driver.findElement(By.id("cboStatus")).getText();
        Assert.assertEquals(" R", valorStatus);

        // Chamado
        driver.findElement(By.id("txtChamado")).sendKeys("Teste");

        // Observação
        driver.findElement(By.id("txtObservacao")).sendKeys("Teste 07/06/2018");

        // Botão Salvar
        driver.findElement(By.id("btnSalvar")).click();

    } catch (StaleElementReferenceException e) {

        // Campo Ação
        Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
        acao.selectByIndex(3);

        // Status
        WebDriverWait wait = new WebDriverWait(driver, 10);
        WebElement ele = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("cboStatus")));
        String valorStatus = ele.getText();

        // String valorStatus = driver.findElement(By.id("cboStatus")).getText();
        Assert.assertEquals(" R", valorStatus);
        // Chamado
        driver.findElement(By.id("txtChamado")).sendKeys("Teste");

        // Observação
        driver.findElement(By.id("txtObservacao")).sendKeys("Teste 07/06/2018");

        // Botão Salvar
        driver.findElement(By.id("btnSalvar")).click();

    } catch (Exception e) {

        // Campo Ação
        Select acao = new Select(driver.findElement(By.id("cboSubMotivo")));
        acao.selectByIndex(3);

        // Status
        String valorStatus = driver.findElement(By.id("cboStatus")).getText();
        Assert.assertEquals(" R", valorStatus);

        // Chamado
        driver.findElement(By.id("txtChamado")).sendKeys("Teste");

        // Observação
        driver.findElement(By.id("txtObservacao")).sendKeys("Teste 07/06/2018");

        // Botão Salvar
        driver.findElement(By.id("btnSalvar")).click();

    }

    // Select na base para validar o status da NU_OS
    ValidarEstrategiaPage p = new ValidarEstrategiaPage();
    p.returnNuOs(CodOs);

    // Saindo do Bko+
    Thread.sleep(1000);
    driver.findElement(By.linkText("Sair")).click();

}

@AfterClass
public static void closeBrowser() {

    driver.quit();

}}
EN

回答 1

Stack Overflow用户

发布于 2018-06-09 03:23:45

您清楚地将WebDriver对象定义为方法中的局部变量:

@Test
public void validarStatusOs() throws InterruptedException {
  WebDriver driver = new ChromeDriver();

为了让“After”和“Test”方法都与全局变量交互,请更改为:

@Test
public void validarStatusOs() throws InterruptedException {
  driver = new ChromeDriver();

顺便说一句,把你的类名从'ValidarStatus‘改为'validarStatus’。在Java中,以大写字母开头的类名是一种主要的最佳实践。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50766063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档