Python мануфактураJavaDesign Patterns для автоматизаторів

Design Patterns для автоматизаторів · 1:05:00–1:13:33

DOM tree, CSS і XPath

Пошук елемента має слідувати DOM tree: спочатку стабільний parent/container, потім потрібний descendant або text filter. Playwright і Selenide вміють фільтрувати locator за текстом, тому довгий XPath часто не потрібний. Playwright `locator` сам визначає XPath за `//`, але автор радить використовувати CSS, attributes і можливості бібліотеки. Recorder/debugger можуть запропонувати selector, однак його стабільність усе одно оцінює команда.

Playwright Java, пишемо тести та робимо Selenide на мінімалках →

Design Patterns для автоматизаторів · 0:00–2:01

Селектори, KISS і Proof of Concept

Для селекторів потрібна або впевнена навігація DOM-деревом, або командна домовленість про стабільні `data-*` атрибути; за потреби тестувальник може сам додати їх у frontend і перевірити зміни локально. Автоматизацію радять починати з найпростішого Proof of Concept, щоб рано виявити bot protection, проблемні локатори та інші обмеження системи. Сценарій має підтверджувати бізнес-ціль, а не просто взаємодію з UI. Для e-commerce початковою перевіркою обрано додавання товару до кошика з подальшим підтвердженням результату.

1. Патерни проєктування для UI тестів (перезапис) →

Design Patterns для автоматизаторів · 1:07:10–1:20:11

State для вибраного товару та локальний selector scope

`ProductInfoDto` передається в конструктор `ProductItem` один раз і стає станом компонента. Методи `hasTitle`, `addToCart` та `openProductPage` використовують той самий товар без повторення аргумента в кожному виклику. Це корисно, коли багато методів одного класу працюють з одними й тими самими даними. `ProductList` надає фабричний метод, який створює `ProductItem` для потрібного товару. Всередині компонента спільний батьківський selector картки формується один раз з `id`, а конкретні методи звужують пошук до title чи кнопки. Так selector scope і стан залишаються локальними для картки, а тест не знає її DOM-структури.

1. Патерни проєктування для UI тестів (перезапис) →

Design Patterns для автоматизаторів · 1:23:41–1:33:02

Scroll, virtualized lists і locator contracts

Mobile list часто рендерить лише елементи, видимі на screen, тому до п'ятого чи наступного item неможливо звернутися без scroll. Це відрізняється від звичайного HTML, де весь отриманий DOM часто вже доступний driver. Для пошуку радять `accessibilityId`, accessibility label, Android resource ID або content description, а не XPath. Тестувальник може сам додавати ці атрибути в application code і надсилати невеликий PR на review, бо hotfixes та custom components регулярно порушують навіть узгоджений locator guideline.

Мобільне тестування та автоматизація →
Запитати в чаті про «dom» →