Как Selenium делает CLICK

Mar 02, 2017 21:50

Представим, что у нас есть веб-сервис, тяжело нагруженный джава-скриптом. И по щелчку мышкой на элементе (неважно, левой кнопкой или правой) силами этого скрипта должно выводиться некое меню. Что делает Селениум? Он скроллит окно браузера так, чтобы элемент умещался в видимой части окна целиком. А после уже делает click. При этом, действия происходят асинхронно (убиться веником, не понимаю почему, но факт, выстраданно) и если меню пропадает от любого чиха (как у меня) то возможен случай, когда сначала эмулируется щелчок, а уже потом сдвинутся полосы прокрутки - и меню, соответственно, немедленно пропадет. На последнем Хроме это происходило у меня примерно в четверти всех тестов. Поэтому...

Вместо простого

element.click();

Сначала нужно проскроллить, а уж потом и щелкнуть:

actions.moveToElement(element).perform();
element.click();

Первая команда выбирает элемент и скроллит, после чего Селениум больше не пытается делать что-либо неожиданное. Возможно, между этими двумя строчками нужно вставить еще и ожидание, если скрипты перерисовывают на каждый скролл (чур меня, чур!).

Но это еще не все фортели, которые выкидывает Selenium, и о которых можно узнать только на горьком опыте...

selenium

Previous post
Up