appium-client - проблема с определением класса виджета с помощью локатора на уровне класса - PullRequest
0 голосов
/ 03 октября 2019

Согласно https://github.com/appium/java-client/blob/master/docs/Page-objects.md мы сможем определить повторно используемый компонент, расширив класс

io.appium.java_client.pagefactory.Widget

В приведенной выше документации отмечалось, что локатор для переменной экземпляра представляетОбъект виджета может быть помещен над объявлением его

class page1{
    ...
    @FindBy(id = "//xpath..")
    private SthExtendsWidget widget1;
    ...
}

или непосредственно над ключевым словом class в файле, где определен виджет

@FindBy(id = "//xpath..")
class SthExtendsWidget {
    ...

    private SthExtendsWidget widget1;
    ...
}

Согласно документу,Если мы можем найти виджет на всех страницах, используя один и тот же локатор, мы можем поместить его выше ключевого слова class , как указано выше, чтобы не повторять его каждый раз, когда он появляется на определенной странице. Проблема в том, что это невозможно по моему мнению. Я пытался использовать исходный код из https://github.com/grasshopper7/component/tree/master/component

После перемещения локатора для SOQuesWidget из SOHomePageObject в SOQuesWidget я заканчиваю со следующим исключением:

java.lang.ClassCastException: class java.lang.Class cannot be cast to class java.lang.reflect.Field (java.lang.Class and java.lang.reflect.Field are in module java.base of loader 'bootstrap')

Isэто ошибка или недоразумение фреймворка?

...