I can't using PageFactory this case:
Class xxxLoginPage:
public class xxxLoginPage extends usingDriver{
public WebDriver driver;
public usingObjectLoginPage usingObjectLogin = new usingObjectLoginPage(driver);
@Test
public void LoginPass(){
usingObjectLogin.LoginPass("nhanvh", "111111");
}
@Test
public void LoginFail() {
System.out.println(xxxCommons.URL_CHROME_DRIVE);
}
@BeforeTest
public void beforeTest() {
getURL(driver,xxxCommons.URL_CHROME_DRIVE, xxxCommons.URL_MUV_PAGE);
// usingObjectLogin = new usingObjectLoginPage(driver);
}
@AfterTest
public void afterTest() {
}
}
Class usingObjectLoginPage :
public class usingObjectLoginPage {
public WebDriver driver;
public ObjectLoginPage ObjLogin;
public usingObjectLoginPage(WebDriver driver){
this.driver = driver;
ObjLogin = PageFactory.initElements(driver, ObjectLoginPage.class);
}
public void LoginPass(String username, String password){
xxxActions.setValue(ObjLogin.txtUser, username);
xxxActions.setValue(ObjLogin.txtPass, password);
xxxActions.doClick(ObjLogin.btnLogin);
}
}
Class C:
public class xxxActions {
public static void getValue(WebElement element) {
element.getText();
}
public static void setValue(WebElement element, String txt) {
element.sendKeys(txt);
}
public static void doClick(WebElement element) {
element.click();
}
}
I run it and occur error at LoginPass
In console have notification bellow:
PASSED: LoginFail
FAILED: LoginPass
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.$Proxy7.sendKeys(Unknown Source)
at com.xxx.common.xxxActions.setValue(muvActions.java:11)
at com.xxx.utility.usingObjectLoginPage.LoginPass(usingObjectLoginPage.java:19)
at com.xxx.feature.muvLoginPage.LoginPass(muvLoginPage.java:18)
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:100)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:646)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:811)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1137)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:753)
at org.testng.TestRunner.run(TestRunner.java:607)
Please help me :(