Получение InstantiationException при создании factory для страницы с помощью appium

Я запускаю тестовый пример, используя метод pagefactory, и создал драйвер appium. Я пытаюсь инициализировать страницу с помощью класса pagefactory следующим образом:

Тестовый класс:

public class VerifyValidLogin {
    @Test
    public void CheckValidUser() throws MalformedURLException {
        AppiumDriver driver = DeviceFactory.CreateDriver();
        login login_page = PageFactory.initElements(driver, login.class);
    }
}

Класс DeviceFactory:

public class DeviceFactory {
  public static AppiumDriver<MobileElement> driver;
  public static AppiumDriver CreateDriver() throws MalformedURLException {
    DesiredCapabilities cap = new DesiredCapabilities();
    cap.setCapability( capabilityName: 'deviceName', value: 'Something');
    ...
    URL url = new URL("http://127.0.0.1:4723/wd/hub");
    driver = new AppiumDriver<MobileElement>(url,cap);
    System.out.print("Application started");
    return driver;
  }
}

Класс входа имеет локаторы элементов:

public class login {
    AppiumDriver driver;

    public login(AppiumDriver ldriver)
    {
        this.driver=ldriver;
    }

    @FindBy(how = How.XPATH,using ="xpath");
    MobileElement SignInButton;
}

Но я не уверен, где я делаю неправильно.

Ошибка

java.lang.RuntimeException: java.lang.InstantiationException: com.Demo.pages.login
at org.openqa.selenium.support.PageFactory.instantiatePage(PageFactory.java:134)
at org.openqa.selenium.support.PageFactory.initElements(PageFactory.java:64)
at com.Demo.Testcases.VerifyValidLogin.CheckValidUser(VerifyValidLogin.java:18)
...

Я новичок в автоматическом тестировании, поэтому не могу правильно понять ошибку. Дайте мне знать, если вам нужна дополнительная информация.


person Gulshan Nadaph    schedule 18.07.2020    source источник


Ответы (1)


Инициализировать элементы в конструкторе

public login(AppiumDriver ldriver)
    {
        this.driver=ldriver;
        PageFactory.initElements(ldriver,this);
    }
person Ankit Agrawal    schedule 19.07.2020