Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

При инициализации поля при помощи PageFactory выбивает ошибку - Method threw 'java.lang.NullPointerException' exception. Cannot evaluate com.sun.proxy.$Proxy5.toString(). Кто-то сталкивался с таким, подскажите?


(Andrey Bzhestovskyy) #1

Есть класс, в конструкторе которого идет инициализация веб элементов:

У него есть потомок - LoginForm (PageObject) с описанием элементов на странице и методом

Управляет LoginForm класс ApplicationManager.

И есть некий класс Base1, в котором производятся предварительные шаги для тестов (тестовые классы наследуются от него).

При запуске тестов при дебаге такое показывает:

Посоветуйте, в чем может быть причина?


(Yaroslav Pernerovskyy) #2

Запустите в дебаге и посмотрите как в момент создания объекта ApplicationManager в него попадает driver. И что смысла вызывать setDriver при уже созданом объекте пейджы не очень много.


(Andrey Bzhestovskyy) #3

В момент создания ApplicationManager драйвер у меня =null (не пойму чего), поэтому приходится вызывать setDriver


(Oleksii Ihnatiuk) #4

Для начала почитайте почему может возникать NullPointerException. Это добавит вам понимания где искать корень ошибки. Я думаю что корень проблемы в том, как вы описали Base1 класс:
если я прав, то у вас все будет работать если вы напишете вместо
manager = ApplicationManager.getInstance()
manager = new ApplicationManager();


(Yaroslav Pernerovskyy) #5

Он null, потому что вы его туда не передали ))
А если не передали, и при этом уже создали объект страницы, то любая последующая передача драйвера в объект апликейншн вообще никак не влияет на объект LoginForm у вас же driver не статик.
Вам нужно драйвер передавать в конструктор апликейшинМенеджера и дальше по цепочке.
Ну и PageFactory.initElements(this.driver…
И еще, не вставляйте код картинками, потом сложно его править, если нужно.