Jey
Jey

Reputation: 21

How to fix null pointer exception in Java selenium TestNG?

When I executing my test cases from testng xml file all tests successfully executed but trying to run with groups in xml then it is throwing Null pointer exception.

**java.lang.NullPointerException: Cannot invoke "org.openqa.selenium.WebDriver.get(String)" because the return value of "org.testpackage.TC370_Quiz.getDriver()" is null **

In my baseclass:

public class BaseClass {

    public ThreadLocal<WebDriver> driver = new ThreadLocal<>();

    public void setDriver(WebDriver driver) {
        this.driver.set(driver);
    }

    public WebDriver getDriver() {
        return this.driver.get();
    }

    // Creating object for ReadConfig class
    ReadConfig readconfig = new ReadConfig();

    // Calling the method from ReadConfig Class
    public String baseURL = readconfig.getApplicationUrl();

// Launching browser 
@Parameters("browser")
@BeforeMethod
public void launch(ITestContext context, @Optional("chrome") String browser, Method method)
            throws MalformedURLException {
if (browser.equalsIgnoreCase("chrome")) {
    ChromeOptions options = new ChromeOptions();
    setDriver(new ChromeDriver(options));

In my page class:

public class QuizPage extends BaseClass {

WebDriver driver;

public SmartQuizPage(WebDriver driver) {
    this.driver = driver;
    PageFactory.initElements(driver, this);
}

@FindBy(xpath = "//label[text()='Quiz']")
private WebElement sQuiz;

In my page object manager class:

public QuizPage quizPage;

public QuizPage getQuizPage(WebDriver driver) {
return (quizPage == null) ? quizPage = new QuizPage(driver) : quizPage;
}

In my test class:


    @Test(priority = 377, groups = { "smoke" },enabled = true)
    public void testingOnStartButtonInHindiInstructionPage() throws InterruptedException {

    getDriver().get(baseURL);
    extentTest.info("Website launched");

    PageObjectManager pom = new PageObjectManager();

    pom.getResources(getDriver()).mouseHoverOnResources();

    pom.getQuizPage(getDriver()).clickQuiz();
    extentTest.info("Clicked quiz");

In my TestNG xml file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="false" thread-count="2">
<parameter name="author" value="Jey" />

<test name="Test" parallel="classes" thread-count="1" enabled="true">
    <parameter name="browser" value="chrome"></parameter>
    <groups>
        <run>
            <include name="smoke"></include>
        </run>
        </groups>
    <classes>
        <class name="org.testpackage.TC370_Quiz"></class>
    </classes>
</test>
</suite> 

Upvotes: 0

Views: 94

Answers (1)

Maria
Maria

Reputation: 441

When you debug this error, are you sure the test gets to the:

if (browser.equalsIgnoreCase("chrome")) {
ChromeOptions options = new ChromeOptions();
-->>>> setDriver(new ChromeDriver(options)); this row?

Upvotes: 0

Related Questions