使用范围报告时出现空指针异常

时间:2017-07-25 10:49:04

标签: selenium selenium-webdriver

我有两个班级baseClassTesCaseLoginPage。当我在尝试 在没有任何Report / Logger的情况下执行TesCaseLoginPage类 (ExtentReport),测试用例正在通过。但是,当我得到延伸报告 在我的代码中,我得到NullPointerException。请你帮助我

我在第51行写了report.endTest(logger);。试图发表评论 这一行然后执行。 这次我在第50行中得到了相同的错误,即

logger.log(LogStatus.INFO,"Browser Closed");。所以每次我评论错误行时,只在新的日志相关行中获得相同的错误。

错误日志如下:

Url : http://store.demoqa.com//products-page//your-account// FAILED
> CONFIGURATION: @AfterClass close java.lang.NullPointerException at
> testcases.testCaseLoginPage.close(testCaseLoginPage.java:51) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> sun.reflect.NativeMethodAccessorImpl(NativeMethodAccessorImpl.java:62)
> 
> sun.reflect.DelegatingMethodAccessorImpl.(DelegatingMethodAccessorImpl.
> java:43) at java.lang.reflect.Method.invoke(Method.java:498) at 
> org.testng.internal.MethodInvocationHelper.(MethodInvocationHelper.java:104)
> 
> at
> org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:515)
> at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:217)
> at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:144)
> at 
> org.testng.internal.invokeAfterClassMethods(TestMethodWorker.java:217)
> at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:115)
> at org.testng.TestRunner.privateRun(TestRunner.java:756) at
> org.testng.TestRunner.run(TestRunner.java:610) at
> org.testng.SuiteRunner.runTest(SuiteRunner.java:387)   at
> org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382) at
> org.testng.SuiteRunner.privateRun(SuiteRunner.java:340) at
> org.testng.SuiteRunner.run(SuiteRunner.java:289) at
> org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at
> org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at
> org.testng.TestNG.runSuitesSequentially(TestNG.java:1293) at
> org.testng.TestNG.runSuitesLocally(TestNG.java:1218) at
> org.testng.TestNG.runSuites(TestNG.java:1133) at
> org.testng.TestNG.run(TestNG.java:1104) at
> org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
> at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236) at
> org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81) FAILED:
> login java.lang.NullPointerException at
> testcases.testCaseLoginPage.login(testCaseLoginPage.java:35) at
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at
> reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

以下是代码:

baseClass.java

package testcases;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.support.PageFactory;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import com.relevantcodes.extentreports.ExtentReports;
import com.relevantcodes.extentreports.ExtentTest;
import com.relevantcodes.extentreports.LogStatus;
import factory.BrowserFactory;
import factory.DataproviderFactory;
import pages.LoginPage;

public class baseClass 
{

    WebDriver driver;
    ExtentReports report;
    ExtentTest logger;
    String loginText;

    public void setUP()
    {
        driver=BrowserFactory.getBrowser("chrome");
        driver.get(DataproviderFactory.getConfig().getApplicationurl());
    }

    public void loginIntoApplication()
    {       
        LoginPage login=PageFactory.initElements(driver, LoginPage.class);
        login.Login(DataproviderFactory.getExcel().getData(0, 0, 0), 
        DataproviderFactory.getExcel().getData(0, 0, 1));
    }

    public String LoginVerification()
    {
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
        System.out.println(e.getMessage());
        }
        //WebDriverWait wait=new WebDriverWait(driver, 20);
        //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//li[@id='wp-admin-bar-my-account']/a")));

        loginText=driver.findElement(By.xpath("//li[@id='wp-admin-bar-my-account']/a")).getText();
        logger.log(LogStatus.INFO, "Logiin account text has been captured successfully");
        return loginText;
    }

    public void TearDown()
    {
        driver.quit();
    }
}

testCaseLoginPage.java

package testcases;
import org.openqa.selenium.By;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Test; 
import com.relevantcodes.extentreports.LogStatus;
import pages.LoginPage;


public class testCaseLoginPage extends baseClass
{

    //WebDriver driver;
    //baseClass base=PageFactory.initElements(driver, baseClass.class);

    @BeforeTest
    public void initial()
    {
        base.setUP();
    }

    @Test(priority=1)
    public void login()
    {

        base.loginIntoApplication();
        try {
            Thread.sleep(5000);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }
        //WebDriverWait wait=new WebDriverWait(driver, 20);
        //wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[contains(.,'Howdy')]")));
        logger.log(LogStatus.INFO, "Logiin into applicaion successfully");
        //LoginPage login=PageFactory.initElements(driver, LoginPage.class);

        LoginPage login=new LoginPage(driver);
        base.LoginVerification();
        System.out.println("Login Text : "+base.loginText);

        Assert.assertEquals(base.loginText, login.Exp,"Unable to verify login verification");   
        logger.log(LogStatus.PASS, "Verified login account with expected user successfully");

    }

    @AfterTest
    public void close()
    {
        base.TearDown();
        logger.log(LogStatus.INFO, "Browser Closed");
        report.endTest(logger);
        report.flush();
    }
}

0 个答案:

没有答案