Скорость работы клика через webdriver для IE

ashot
sikuli
internet-explorer
webdriver
Теги: #<Tag:0x00007fedb9e34ca8> #<Tag:0x00007fedb9e34aa0> #<Tag:0x00007fedb9e348c0> #<Tag:0x00007fedb9e346b8>

(Павел Сенин) #1

Есть задача автоматического измерения времени выполнения JS по отрисовке сложного интерфейса в браузере, после клика пользователя на определенных кнопках. Selenium служит для автоматической подготовке к измерению и его запуску. Окончание работы по отрисовке заданного элемента засекается по его появлению на экране через sikuli (т.к. появление элемента в DOM-дереве браузере, совершенно не означает, что он отрисован в браузере и пользователь его видит).
Но не понятно как засекать начальное время выполнение клика при запуске автотеста на IE. Оказалось, что стандартный метод клика селениума по вебэлементу в этом случае может отрабатывать 1 секунду (и это на Core i7). И непонятно в какой именно момент времени в течении этого периода был совершен клик в браузере. Это вносит огромную погрешность в измерении времени по отображению простых элементов, которые появляются за 1-2 сек.
Можно сделать запись видео и потом определить время реального клика, и внести поправку. Но тесты будут гоняться на совершенно разном железе - так что это не вариант.
Пробовал задержку работы вебдрайвера обойти через sikuli - сделал метод, в который передается вебэлемент. Из него делается скриншот и передается в sikuli как паттерн. Потом происходит клик по нему. Но столкнулся со странной особенностью - скриншот делается в правильных размерах элемента, но т.к. его координаты смещены на 100-200 пикс по вертикали, то в скриншоте оказывается не то что нужно. Применял библиотку от Яндекса - AShot, потом применил средства Selenium - все равно скриншот делается со смещением (но уже другим). Я думаю это из-за особенности очень навороченного и перегруженного интерфейса.
Подскажите, как можно засечь время клика в IE c погрешностью примерно в 100-200 мс.?


(zub_test) #2

У IEDriverServer_x64 возможны проблемы с производительностью. Попробуйте IEDriverServer_Win32.


(Evgeniy Maksimenko) #3

в селениуме есть WebDriverEventListener интерфейс, там есть beforeClickOn() и afterClickOn(). думаю, на основание этого листенера можно считать время выполнения


(Павел Сенин) #4

спасибо, клик через JS хорошо себя показал, длится в разных браузерах от 20 до 100 мс - это достаточно малая погрешность для моей задачи