Size: a a a

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

2020 May 21

S

Sergey Sergey in QA — Автоматизация
Anna
Ну смотрите, вот как сделано было, на примере - кликнуть по продукту, кликнуть по корзине, кликнуть по покупке. И для всего этого было написано три метода, которые привязаны к локаторам. С другими локаторами эти методы не работают просто. Это нарушение концепций ооп. Ведь можно сделать один метод, и передавать локатор как параметр
если у вас молоток в руках (ООП) это не значит, что надо все понимать буквально и везде видеть гвозди (универсальные методы) :)
источник

S

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

R(

Roman (rpwheeler) in QA — Автоматизация
Anna
Ну смотрите, вот как сделано было, на примере - кликнуть по продукту, кликнуть по корзине, кликнуть по покупке. И для всего этого было написано три метода, которые привязаны к локаторам. С другими локаторами эти методы не работают просто. Это нарушение концепций ооп. Ведь можно сделать один метод, и передавать локатор как параметр
Это не нарушение.

Методы реализуют-отображают некое "поведение", они вполне могут быть привязаны к одному локатору.

Другое дело что такая реализация методов обязательной не является.
источник

A

Anna in QA — Автоматизация
Sergey Sergey
если у вас молоток в руках (ООП) это не значит, что надо все понимать буквально и везде видеть гвозди (универсальные методы) :)
Ну хорошо, на примере у автора курса три метода на три кнопки. У меня на работе только на одной странице работы с клиентскими данными примерно 600 кнопок и полей ввода данных. Можно же с ума сойти, описывая методы для каждого из них)
источник

SA

Scherbakov Alexey in QA — Автоматизация
Sergey Sergey
Кроме того, универсальные методы это не совсем про ооп в моем понимании
А как быть с тем, что метод может принимать аргумент определенного типа, какого-то интерфейса, а его имплементацый может быть множество. В этом и смысл, что таким образом гарантируется корректная работа.
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Anna
Ну хорошо, на примере у автора курса три метода на три кнопки. У меня на работе только на одной странице работы с клиентскими данными примерно 600 кнопок и полей ввода данных. Можно же с ума сойти, описывая методы для каждого из них)
Не обязательно делать как автор. Как я уже написал, если нет дополнительных нужных действий, можно работать с клик(локатор_кнопки)  без дополнительной обертки страница.клик_вон_ту_кнопку().
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Anna
Ну хорошо, на примере у автора курса три метода на три кнопки. У меня на работе только на одной странице работы с клиентскими данными примерно 600 кнопок и полей ввода данных. Можно же с ума сойти, описывая методы для каждого из них)
Если на странице столько кнопок, то надо уже саму страницу оформлять не в одном объекте, а разбивать на разные объекты (группы кнопок, например).
источник

Э

Эдгар in QA — Автоматизация
Roman (rpwheeler)
Если на странице столько кнопок, то надо уже саму страницу оформлять не в одном объекте, а разбивать на разные объекты (группы кнопок, например).
И выделять ещё на фрагменты, возможно эти же кнопки/элементы есть на других страницах
источник

A

Anna in QA — Автоматизация
Roman (rpwheeler)
Если на странице столько кнопок, то надо уже саму страницу оформлять не в одном объекте, а разбивать на разные объекты (группы кнопок, например).
Так так и делаю, только уже наоборот)
источник
2020 May 22

S

Sergey Sergey in QA — Автоматизация
Anna
Ну хорошо, на примере у автора курса три метода на три кнопки. У меня на работе только на одной странице работы с клиентскими данными примерно 600 кнопок и полей ввода данных. Можно же с ума сойти, описывая методы для каждого из них)
Если вы применяете PAgeObject у вас есть приватные поля (локаторы), как вы хотите обеспечить к ним доступ без публичных методов?) То есть, как вы будете этот локатор в тесте или степе получать?
источник

S

Sergey Sergey in QA — Автоматизация
Можно, конечно, сделать их публичными, но зачем тогда вести речь об ООП?)
источник

A

Anna in QA — Автоматизация
Sergey Sergey
Если вы применяете PAgeObject у вас есть приватные поля (локаторы), как вы хотите обеспечить к ним доступ без публичных методов?) То есть, как вы будете этот локатор в тесте или степе получать?
Локаторы сделала публичными...
источник

S

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

S

Sergey Sergey in QA — Автоматизация
но никто не обязывает вас придерживаться парадигм с другой стороны
источник

SA

Scherbakov Alexey in QA — Автоматизация
Вообще, есть хорошее правило- методы и локаторы держать в разных классах. И подключать по необходимости.
источник

A

Anna in QA — Автоматизация
Sergey Sergey
но никто не обязывает вас придерживаться парадигм с другой стороны
Я просто не понимаю зачем делать разные методы, делающие одно и то же - клик или инпут, когда можно обойтись двумя
источник

S

Sergey Sergey in QA — Автоматизация
Очень просто объяснить это
источник

S

Sergey Sergey in QA — Автоматизация
если вы представите не PO а обычный класс User
источник

R(

Roman (rpwheeler) in QA — Автоматизация
Sergey Sergey
ну, вот вы как раз и нарушаете инкапсуляцию данных )
Исторически модификатор приватного доступа нужен для того чтобы "чужие объекты не могли менять эти данные".

Если в ходе работы данного программного продукта такого происходить не будет (локаторы только инициализируются и читаются), то смысла заворачивать всё в приваты как-то особо и нет.
источник

S

Sergey Sergey in QA — Автоматизация
не только
источник