Hi Guys,
Config:
Appium client :1.7.2
junit -4.12
selenium-server -3.9.1
java-client - 5.0.4
test ng- 6.14.2
dependencies -maven
Getting a null pointer exception, while initializing android driver using POM,app is launching but at login screen it throws exception could anyone suggest a solution for it.thanks again
BaseSetup
@BeforeClass
public class BaseSetup {
public AndroidDriver driver =null;
public static String sRootDir = null;
public static String sPropFile = null;
DesiredCapabilities caps = new DesiredCapabilities();
capabilities.setCapability("deviceName", "Moto E");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("platformVersion", "6.0");
capabilities.setCapability("appPackage", "com.android.vending");
capabilities.setCapability("appActivity", "com.google.android.finsky.activities.MainActivity");
capabilities.setCapability("noReset", "true");
URL url = new URL(GenericLib.toReadProperty(sPropFile,"URL"));
driver = new AndroidDriver(url,capabilities);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
}
LoginPage
public class LoginPage extends BaseSetup {
LoginPageObjects LoginPage;
String userName ="";
String passWord = "";
public LoginPage()
{
super();
LoginPage = new LoginPageObjects();
PageFactory.initElements(driver, LoginPage);
}
public boolean validateLoginPage()
{
boolean elements = false;
if(LoginPage.emailFld.isDisplayed()){
if(LoginPage.passwordFld.isDisplayed()){
if(LoginPage.forgotPwdLink.isDisplayed()){
if(LoginPage.loginBtn.isDisplayed()){
if(LoginPage.facebookBtn.isDisplayed()){
if(LoginPage.googlePlusBtn.isDisplayed()){
if(LoginPage.signUpLink.isDisplayed()){
elements =true;
}
}
}
}
else
{
elements =false;
}
}
}
}
return elements;
}
public boolean validatewithoutCredentialsLogin()
{
boolean loginstatus=false;
LoginPage.loginBtn.click();
if(LoginPage.toString().equalsIgnoreCase("Please enter Email ID/Mobile"))
{
loginstatus =true;
}
LoginPage.loginBtn.sendKeys(userName);
LoginPage.loginBtn.click();
if(LoginPage.toString().equalsIgnoreCase("Please enter password"))
{
loginstatus = true;
}
return loginstatus;
}
public class LoginPageObjects
{
@CacheLookup
@FindBy(id=“com.app:id/etEmail”)
public WebElement emailFld;
@FindBy(id="com.app:id/etPassword")
public WebElement passwordFld;
@FindBy(id="com.app:id/tvForgotPassword")
public WebElement forgotPwdLink;
@FindBy(id="com.app:id/tvLogin")
public WebElement loginBtn;
@FindBy(id="com.app:id/rlFacebook")
public WebElement facebookBtn;
@FindBy(id="com.app:id/rlGplus")
public WebElement googlePlusBtn;
@FindBy(id="com.app:id/tvSign")
public WebElement signUpLink;
public void emailClick()
{
LoginPage.emailFld.sendKeys("test@gmail.com");
}
public void psswdClick()
{
LoginPage.passwordFld.sendKeys("bengaluru");
}
}
}
LoginTest
public class LoginTest extends LoginPage {
@Test(priority =1)
public void enterFields()
{
LoginPageObjects lbtn = new LoginPageObjects();
lbtn.emailClick();
lbtn.psswdClick();
}
@Test(priority =2)
public void testLogin()
{
LoginPage loginPage = new LoginPage();
if(loginPage.validateLoginPage()== true)
{
loginPage.validatewithoutCredentialsLogin();
System.out.println("validation Successfull");
}
else
{
System.out.println("validation UnSuccessfull");
}
}
}
ERROR LOGS:
FAILED: enterFields
java.lang.NullPointerException
at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
at com.sun.proxy.$Proxy9.sendKeys(Unknown Source)
at com.sample.pages.LoginPage$LoginPageObjects.emailClick(LoginPage.java:119)
at com.sample.scripts.LoginTest.enterFields(LoginTest.java:15)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
FAILED: testLogin
java.lang.NullPointerException
at org.openqa.selenium.support.pagefactory.DefaultElementLocator.findElement(DefaultElementLocator.java:69)
at org.openqa.selenium.support.pagefactory.internal.LocatingElementHandler.invoke(LocatingElementHandler.java:38)
at com.sun.proxy.$Proxy9.isDisplayed(Unknown Source)
at com.sample.pages.LoginPage.validateLoginPage(LoginPage.java:41)
at com.sample.scripts.LoginTest.testLogin(LoginTest.java:37)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:580)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:716)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:988)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
===============================================
Default test
Tests run: 2, Failures: 2, Skips: 0
===============================================
Default suite
Total tests run: 2, Failures: 2, Skips: 0