Проблема заключается в том, чтобы найти способ перехватить какое-то кастомное событие в Selenium. Пример события jquery в тестируемом приложении:
$('#vectorOverlay').on('dataLoaded', function () {// some code};
Собственно, мне требуется только знать, что событие 'dataLoaded' наступило. Пробовал делать executeScript и executeAsyncScript - не помогло. Либо я что-то делаю неправильно, либо такая функциональность в selenium'e не поддерживается. У кого какие соображения по этому поводу? Заранее благодарю.
p.s. воркэраунд на это дело есть и он работает, но хотелось бы разобраться именно в обработке подобных событий.
покажите, пожалуйста, код который вы пробывали с executeScript и executeAsyncScript
а также какой у вас воркэраунд уже есть
начнем с воркэраунда.
Я просто попросил девелоперов добавить переменную, которая при наступлении события принимает значение true. В своем коде я получаю это значение и соответствующим образом его обрабатываю.
Пример кода:
boolean isDataLoaded = false;
while(!isDataLoaded)
{
isDataLoaded = (Boolean) ((RemoteWebDriver) driver).executeScript("return window.dataLoaded");
}
Этот вариант работает стабильно.
События пробовал обрабатывать разными способами:
1) ((RemoteWebDriver) driver).executeAsyncScript("$('#vectorOverlay').on('dataLoaded')
2) ((RemoteWebDriver) driver).executeAsyncScript("$('#vectorOverlay').on('dataLoaded', function () {// some code to handle this event};");
Соответственно, после того как попробовал разные варианты с executeAsyncScript, я повторил их с executeScript (просто ради эксперимента). Результат не изменился.