Size: a a a

QA — Автоматизация

2020 November 05

A

Alexander in QA — Автоматизация
Alex Grigurko
знаешь такой подход как kiss?😅
Угу) просто с методами как раз как-то громоздко кажется)
источник

VM

Vova Moskalenko in QA — Автоматизация
Alexander
Угу) просто с методами как раз как-то громоздко кажется)
просто перенеси степы в page.
Пометь все поля аннотацией @FindBy и туда впихни свои локаторы, так они будут искаться только когда к ним пойдет обращение.
В пейдже создай методы insert_email() или что тебе там нужно, и всю логику с драйвером спрячь туда.
Если очень хочется именно степов, сделай степ на 2 строчки, где создаешь страницу и там дергаешь нужный метод этой страницы
источник

VM

Vova Moskalenko in QA — Автоматизация
в таком случае, тебе даже конструктор не понадобится
источник

A

Alexander in QA — Автоматизация
Ну эт тогда не PageObject получится. Если я правильно понимаю
источник

A

Alexander in QA — Автоматизация
Точнее с лишним функционалом. Скорее наерн правильнее будет просто методы - геттеры создать, но чёт как-то колхозно
источник

VM

Vova Moskalenko in QA — Автоматизация
если хочешь совсем упростить, можно сами методы страницы пометить, как степы)
источник

A

Alexander in QA — Автоматизация
Ну блин) это не то)
источник

VM

Vova Moskalenko in QA — Автоматизация
почему? Логика ж пейдж обжекта в том, чтобы ты работал с абстракциями на странице
источник

VM

Vova Moskalenko in QA — Автоматизация
типа, если поменяшь страницу, не нужно менять тесты
источник

A

Alexander in QA — Автоматизация
Ну да, можно добавить методы, в которых будут выполняться действия с объектами, но грю, в таком случае наерн лучше просто объекты в методы обернуть, как советовал Alex, будет красивее, но не то)) хотя варик рабочий вроде бы
источник

VM

Vova Moskalenko in QA — Автоматизация
https://pastebin.pl/view/b64c55a3
выдрал кусок рабочего проекта. Можно вместо аннотаций, искать элементы прям в методах, будет то же самое, главное, чтобы все локаторы были в одном месте
источник

A

Alexander in QA — Автоматизация
Vova Moskalenko
https://pastebin.pl/view/b64c55a3
выдрал кусок рабочего проекта. Можно вместо аннотаций, искать элементы прям в методах, будет то же самое, главное, чтобы все локаторы были в одном месте
Ну как я понял, Alex это и предлагал)
FindBy кстати заманчиво выглядит, однако, как я понимаю там можно только со статическим xpath работать. Т.е. нельзя искать от какого-либо элемента?
источник

VM

Vova Moskalenko in QA — Автоматизация
можно
источник

A

Alexander in QA — Автоматизация
Но наверное даже если можно, то сперва нужно инициализировать родительский элемент?
источник

VM

Vova Moskalenko in QA — Автоматизация
ну тут уже да
источник

A

Alexander in QA — Автоматизация
Ну в любом случае звучит заманчиво) у тебя в примере я вижу,что ты отталкиваешься от глобального локатора страницы, а как вместо него передать элемент?
источник

VM

Vova Moskalenko in QA — Автоматизация
элемент поддерживает обычные методы поиска, но тогда придется уже искать явно в методе, например так

final WebElement target = getCampaignRow(campaignName);
   moveToElementAndClick(target.findElement(By.cssSelector("button[title = \"Edit\"]")));
источник

A

Alexander in QA — Автоматизация
Жесть)
источник

YR

Yokohama Ree in QA — Автоматизация
Alexander
Ребят. Создаю на java + selenium PageObject, делаю отдельный метод в котором добавляю элементы и который инициализирую в конструкторе.
Так вот, столкнулся с проблемой, что он пытается сразу найти все эти элементы на странице и соответственно выдает ошибку т.к. их на странице ещё нету.
Можно ли как-то реализовать тему, чтобы добавить элементы, которые будут искаться только тогда, когда буду обращаться в коде к этим элементам, а не во время инициализации?
ищи элемент только при действии с ним вот и всё.
источник

A

Alexander in QA — Автоматизация
Не, я имел в виду что-то типо
@FindBy(elem.xpath+'.//a[@id="abcd"]')
источник