0

I am getting "java.lang.NullPointerException" when I am trying to execute my test case based on POM. The class BrowserFactory lets me choose a browser, the class Flipkart_Login based on POM stores all the element of that particular page and has a method for Valid_Login() and finally Test_Flipkart_Login class - calls the Valid_Login() method for executon but when I try to execute this class, I get java.lang.NullPointerException.

Kindly advise!

FAILED: Flipkart_Login_Test java.lang.NullPointerException at DataProviders.ConfigDataProvider.getURL(ConfigDataProvider.java:31) at TestCases.Test_Flipkart_Login.Flipkart_Login_Test(Test_Flipkart_Login.java:19)

public class ConfigDataProvider { static Properties pro;

public ConfigDataProvider()
{

    File src = new File("C:\\Data\\Bimlesh\\Flipkart_HybridFramework\\Flipkart.Hybrid.FrameworkComplete\\Configuration\\Config.Properties");

    try 
    {
        FileInputStream fis = new FileInputStream(src);
        pro = new Properties();
        pro.load(fis);

    } catch (Exception e) 
    {
        System.out.println("The Config exception is :"+e.getMessage());
    }

}

public static String getURL()
{
    String URL = pro.getProperty("URL");
    return URL;
}

public static String ChromePath()
{
    String Chrome = pro.getProperty("Chromepath");
    return Chrome;
}

public static String IEPath()
{
    String IE = pro.getProperty("IEpath");
    return IE;
}

}

public class BrowserFactory { static WebDriver driver;

public static WebDriver getBrowser(String BrowserName)
{
    if(BrowserName.equalsIgnoreCase("Firefox"))
    {
        driver = new FirefoxDriver();
    }
    else if(BrowserName.equalsIgnoreCase("Chrome"))
    {
        System.setProperty("webdriver.chrome.driver", ConfigDataProvider.ChromePath());
        driver = new ChromeDriver();
    }
    else if(BrowserName.equalsIgnoreCase("IE"))
    {
        System.setProperty("webdriver.ie.driver", ConfigDataProvider.IEPath());
        driver = new InternetExplorerDriver();
    }

    driver.manage().window().maximize();
    driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
    return driver;
}

public void ShutDown(WebDriver driver)
{
    driver.quit();
}

}

public class Flipkart_Login { WebDriver driver;

public Flipkart_Login(WebDriver driver)
{
    this.driver=driver;
}

@FindBy(xpath="//a[text()='Log In']") WebElement Login_Click;
@FindBy(xpath="//input[@class='_2zrpKA' and @type='text']") WebElement Enter_Email;
@FindBy(xpath="//input[@class='_2zrpKA _3v41xv' and @type='password']") WebElement Enter_Pass;
@FindBy(xpath="//button[@type='submit' and @class='_3zLR9i _1LctnI _36SmAs']") WebElement Login_Button;

public void Valid_Login()
{
    Login_Click.click();
    Enter_Email.sendKeys("[email protected]");
    Enter_Pass.sendKeys("xxx");
    Login_Button.click();

}

}

public class Test_Flipkart_Login { WebDriver driver;

@Test
public void Flipkart_Login_Test()
{
    driver = BrowserFactory.getBrowser("Firefox");
    driver.get(ConfigDataProvider.getURL());
    Flipkart_Login page1 = PageFactory.initElements(driver, Flipkart_Login.class);
    page1.Valid_Login();

}

}

1 Answer 1

0

You have initialized Properties pro in the constructor of the COnfigDataProider but you are using a static call to getURL method from your test class. Thus pro will be null and not initialized. Remove static call and use the constructor or make pro to static and initialize in static block.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.