Appium - PageFactory initElements не работает - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть этот класс в качестве объекта моей страницы:

public class LaunchPageObject  {

private AppiumDriver<AndroidElement> driver;

public LaunchPageObject() {

}

public LaunchPageObject(AppiumDriver<AndroidElement> driver) {

    this.driver=driver;
    PageFactory.initElements(new AppiumFieldDecorator(this.driver), this);
}

public void Click_SigninNow() {

    lnk_SigninNow.click();
}

@AndroidFindBy(xpath="//android.widget.Button[@text='LOGIN WITH FACEBOOK']")
MobileElement btn_SignupWithEmail;

@AndroidFindBy(xpath="//android.widget.Button[@text='SIGN UP WITH EMAIL']")
MobileElement btn_LoginWithFacebook;

@AndroidFindBy(xpath="//android.widget.TextView[@text='Sign in now']")
MobileElement lnk_SigninNow;
}

, и у меня есть этот класс в качестве класса моего теста:

public class LaunchPageTest extends Android {

  @Test
  public void Click_SigninNow() throws MalformedURLException {

  LaunchPageObject lp = new LaunchPageObject(setDriver());
  lp.Click_SigninNow();
  }
}

У меня есть этот журнал ошибок:

СБОЙ: Click_SigninNow java.lang.ExceptionInInitializerError в io.appium.java_client.pagefactory.utils.ProxyFactory.getEnhancedProxy (ProxyFactory.java:52) в io.appium.java_clitilh.Proxy.jpgProxyFactory.java:33) в io.appium.java_client.pagefactory.AppiumFieldDecorator.proxyForAnElement (AppiumFieldDecorator.java:217) в io.appium.java_client.pagefactory.AppiumFieldDecorator.acava at.java_client.pagefactory.AppiumFieldDecorator $ 1.proxyForLocator (AppiumFieldDecorator.java:107) в org.openqa.selenium.support.pagefactory.DefaultFieldDecorator.decorate (по умолчанию.java: 155) в org.openqa.selenium.support.PageFactory.proxyFields (PageFactory.java:113) в org.openqa.selenium.support.PageFactory.initElements (PageFactory.java:105) в POM.LaunchPageObject. (LaunchPageObject.java:35) в TestCases.LaunchPageTest.Click_SavaPage (17) (17).at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод)

Тест открывает приложение, но не может щелкнуть элемент.Есть идеи, что здесь происходит?

1 Ответ

0 голосов
/ 23 ноября 2018

Сохраняйте объект страницы и тестируйте классы, как показано ниже

public class LaunchPageObject {

    @AndroidFindBy(xpath="//android.widget.Button[@text='LOGIN WITH FACEBOOK']")
    MobileElement btn_SignupWithEmail;

    @AndroidFindBy(xpath="//android.widget.Button[@text='SIGN UP WITH EMAIL']")
    MobileElement btn_LoginWithFacebook;

    @AndroidFindBy(xpath="//android.widget.TextView[@text='Sign in now']")
    MobileElement lnk_SigninNow;

    public void click_SigninNow() {
        lnk_SigninNow.click();
    }

}




public class LaunchPageTest extends Android {

  LaunchPageObject lp       = PageFactory.initElements(getDriver(), LaunchPageObject.class);

  @Test
  public void Click_SigninNow() throws MalformedURLException {
    lp.Click_SigninNow();
  }

}
...