Как стать автором
Обновить

Комментарии 6

А как вы в селениуме подписываетесь на евенты? Допустим, на сайте есть блок, который плавно двигается из точки А в точку Б и когда он в точке Б будет на месте — необходимо сделать проверку, но не раньше. Можно ли в Селениум бросить евент из JS?
Да, можно выполнить любой js в контексте страницы.
Это JS в контексте страницы, тут никаких проблем, а обратная связь. Что-то вроде:

window.launchCoolAnimation({
  target: object,
  onComplete: function () {
    SELENIUM.on_complete();
  }
})


В любом случае надо ждать какого-то условия, варианта два — ожидание селектора, либо ожидание изменение состояния какого-то обьекта в js. В данном случае, ждете в асинхронном вызове жс-а (JsonWireProtocol) пока ваша функция вернет какое-либо значение, которое означает что движение блока завершилось ( либо же ожидаете изменение в css/html), проверяя событие каждые N секунд, но не более N*M секунд. Если функция возвращает нужное значение — вызываете launchCoolAnimation. В зависимости от фреймворка (или биндингов) можно юзать и eventHandler's, например (browserevent), хотя это можно и самому реализовать достаочно легко.
Дякую.
Вообще если честно этим я и не люблю кучи методов by class, by id и тд, в то время как уже давно есть более быстрые и более удобные css selectors. Единственный минус — это отсутствие поиска по тексту, т.к. его депрекейтнули, но и искать по тексту тоже не лучший вариант :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории