Size: a a a

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

2020 May 20

M

Mark in QA — Автоматизация
Не понятно
источник

AV

Alexei Vinogradov in QA — Автоматизация
DevTools даёт т.н. абсолютный путь к элементу. Это как если вы объясняете как доехать до вашей Пятёрочки так: 1. Начинаем всегда с Северного полюса. 2. Затем 150 км на юг на ледоколе. 3. Потом по шоссе Е12 до пересечания с А626. 4. .... 62. 20 шагов на запад - это Пятёрочка.

А хороший селектор выглядит так: 1. Знаешь памятник Некрасову на Новом Арбате? 2. Так вот продуктовый магазин прямо через дорогу от него - Пятёрочка.
источник

В

Владислав in QA — Автоматизация
Mark
Не понятно
Теперь вы можете сами посмотреть на эту страницу и увидеть, что огромный футер действительно перекрывает нужную нам кнопку. Футером (footer) называется нижний блок, который обычно одинаков для всех страниц сайта. Чтобы понять, как решить эту проблему, нужно разобраться, как работает метод click().

В первую очередь WebDriver проверит, что ширина и высота элемента больше 0, чтобы по нему можно было кликнуть.

Затем, если элемент находится за границей окна браузера, WebDriver автоматически проскроллит страницу, чтобы элемент попал в область видимости, то есть не находился за границей экрана. Но это не гарантирует того, что элемент не перекрыт другим элементом, который тоже находится в области видимости.

А в какую точку элемента будет происходить клик? Selenium рассчитывает координаты центра элемента и производит клик в вычисленную точку. Это тоже приведёт к ошибке, если часть элемента всё-таки видна, но элемент перекрыт больше чем на половину своей высоты или ширины.

Если мы столкнулись с такой ситуацией, мы можем заставить браузер дополнительно проскролить нужный элемент, чтобы он точно стал видимым.
Делается это с помощью следующего скрипта:

"return arguments[0].scrollIntoView(true);"
Мы дополнительно передали в метод scrollIntoView аргумент true, чтобы элемент после скролла оказался в области видимости. Другие возможные параметры метода можно посмотреть здесь: https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView

В итоге, чтобы кликнуть на перекрытую кнопку, нам нужно выполнить следующие команды в коде:

button = browser.find_element_by_tag_name("button")
browser.execute_script("return arguments[0].scrollIntoView(true);", button)
button.click()
В метод execute_script мы передали текст js-скрипта и найденный элемент button, к которому нужно будет проскролить страницу. После выполнения кода элемент button должен оказаться в верхней части страницы. Подробнее о методе см https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView .
источник

N

Nikita in QA — Автоматизация
Владислав
Теперь вы можете сами посмотреть на эту страницу и увидеть, что огромный футер действительно перекрывает нужную нам кнопку. Футером (footer) называется нижний блок, который обычно одинаков для всех страниц сайта. Чтобы понять, как решить эту проблему, нужно разобраться, как работает метод click().

В первую очередь WebDriver проверит, что ширина и высота элемента больше 0, чтобы по нему можно было кликнуть.

Затем, если элемент находится за границей окна браузера, WebDriver автоматически проскроллит страницу, чтобы элемент попал в область видимости, то есть не находился за границей экрана. Но это не гарантирует того, что элемент не перекрыт другим элементом, который тоже находится в области видимости.

А в какую точку элемента будет происходить клик? Selenium рассчитывает координаты центра элемента и производит клик в вычисленную точку. Это тоже приведёт к ошибке, если часть элемента всё-таки видна, но элемент перекрыт больше чем на половину своей высоты или ширины.

Если мы столкнулись с такой ситуацией, мы можем заставить браузер дополнительно проскролить нужный элемент, чтобы он точно стал видимым.
Делается это с помощью следующего скрипта:

"return arguments[0].scrollIntoView(true);"
Мы дополнительно передали в метод scrollIntoView аргумент true, чтобы элемент после скролла оказался в области видимости. Другие возможные параметры метода можно посмотреть здесь: https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView

В итоге, чтобы кликнуть на перекрытую кнопку, нам нужно выполнить следующие команды в коде:

button = browser.find_element_by_tag_name("button")
browser.execute_script("return arguments[0].scrollIntoView(true);", button)
button.click()
В метод execute_script мы передали текст js-скрипта и найденный элемент button, к которому нужно будет проскролить страницу. После выполнения кода элемент button должен оказаться в верхней части страницы. Подробнее о методе см https://developer.mozilla.org/ru/docs/Web/API/Element/scrollIntoView .
Если огромный футер перекрывает кнопку, чинить нужно футер а не тест, имхо
источник

AV

Alexei Vinogradov in QA — Автоматизация
Забавный момент. Есть такая вещь - темплейты. Например Apache FreeMarker (ftl), Java. И в этих темплейтах частенько полно логики, которую полезно покрывать юнит тестами.
Как проверить coverage таких тестов? Не нашел сейчас на вскидку инструментов, хотя проблема то довольно общая.

Какие-то идеи?

Ну кроме - "логика в темплейтах - зло".
источник

O

Oleg in QA — Автоматизация
логика в темплейтах - зло
источник

N

Nikita in QA — Автоматизация
Темплейты - зло?
источник

YO

Yaroslav Osmysliteln... in QA — Автоматизация
а чем тесты на темплейт отличаются от тестов на что угодно, Базовые механизмы типо jacoco и т.д. почему не подходят? есть линк куда посмотреть,интересно стало
источник

АБ

Арсений Батыров... in QA — Автоматизация
@levyarushin Вчерашний опрос уже распинен же, да? :)
источник

O

Oleg in QA — Автоматизация
Yaroslav Osmyslitelny
а чем тесты на темплейт отличаются от тестов на что угодно, Базовые механизмы типо jacoco и т.д. почему не подходят? есть линк куда посмотреть,интересно стало
так а как ты темплейт инструментируешь?
источник

LY

Lev Yarushin in QA — Автоматизация
Арсений Батыров
@levyarushin Вчерашний опрос уже распинен же, да? :)
Да. Там и сотни не набралось. Похоже в основном всем пофиг.
источник

АБ

Арсений Батыров... in QA — Автоматизация
Lev Yarushin
Да. Там и сотни не набралось. Похоже в основном всем пофиг.
Черт, этого я не предполагал :)
источник

YO

Yaroslav Osmysliteln... in QA — Автоматизация
ну я поэтому и думаю что не так понял, и попросил ссылку. у меня в голове щас java code + логика + выходные данные. и я не вижу разницы пока с чем угодно
источник

O

Oleg in QA — Автоматизация
там не джава код, а фримаркер темплейт со своим дсл
источник

YO

Yaroslav Osmysliteln... in QA — Автоматизация
понял. что не так понял. ток глазами соображу, спс)
источник

O

Oleg in QA — Автоматизация
как проверять покрытие - тоже вопрос. Покрытие кода и в джава тестах мало кто использует. Покрытие логики инструментами не считается.
источник

AV

Alexei Vinogradov in QA — Автоматизация
Yaroslav Osmyslitelny
а чем тесты на темплейт отличаются от тестов на что угодно, Базовые механизмы типо jacoco и т.д. почему не подходят? есть линк куда посмотреть,интересно стало
логика не в .java файле, а в .ftl  
<h1>
   Welcome ${user}<#if user == "Big Joe">, our beloved leader</#if>!
</h1>
источник

O

Oleg in QA — Автоматизация
Так что просто пишешь тесты и надеешься, что ничего не упустил :)
источник

YO

Yaroslav Osmysliteln... in QA — Автоматизация
не похоже ли это на снепшот тестинг, как фронт делает? там вроде разметку проверяют...
источник

O

Oleg in QA — Автоматизация
У нас например есть erb - руби темплейты. Фримаркер мне совсем безумным показался
источник