Перейти к содержимому

Фотография

selenium.common.exceptions.ElementClickInterceptedException:


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 23 мая 2019 - 10:57

Всем привет!

Сделали переход на Selenium 3.9.0 + GeckoDriver 0.19 + FireFox 58.0.2.

 

 

Теперь половина тестов не работает, и везде возникает ошибка: selenium.common.exceptions.ElementClickInterceptedException: Message: Element <a id="tree54" class="tree54" href="javascript:void(0);"> is not clickable at point (151,823) because another element <div class="sidebarBottomElement"> obscures it

Айдишники и классы разные, в зависимости от точки клика.

 

Как это победить? 

 

Написан отдельный метод на клик:

Язык тестов - Python

def click(driver, locator, sleep_time=5, expl_wait=40):
"""
Wait until element will be shown and clickable, then send 'click' to it.
TimeoutException will be generated if something's wrong (NOT NoSuchElementException).

:type driver: WebDriver
:type locator: tuple
:param sleep_time: delay before click
:param expl_wait: explicit waiting time for presence of element will found
:type sleep_time: float
:type expl_wait: float
"""

time.sleep(sleep_time)
WebDriverWait(driver, expl_wait, ignored_exceptions=StaleElementReferenceException).until(
ec.presence_of_element_located(locator))
# additional check were deleted, cause of some unexpected timeout exceptions on it
WebDriverWait(driver, 40).until(ec.element_to_be_clickable(locator))
driver.find_element(*locator).click()
wait_for_loading(driver)

 

К слову, на селениуме 2,53 и мозиле 45 все работало как часы.

Что нужно добавить\поменять, чтобы тесты бегали на ура? При просмотре через консоль, этот элементы куда надо кликнуть никем не перекрывается!


  • 0

#2 Spock

Spock

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 772 сообщений
  • ФИО:Роман

Отправлено 23 мая 2019 - 11:12

можно так:

 

  1. добавьте в тесты код который выводит координаты клика и делает скриншот
  2. запустите тесты на старой версии
  3. откройте скриншот в редакторе и по выведенным координатам нарисуйте точку клика
  4. запустите тесты на новой версии
  5. повторите шаги из пункта 3
  6. сравните оба полученных скриншота

может сразу будет видно что веб-драйвер кликает не туда


  • 0

#3 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 23 мая 2019 - 13:39

Так а может сделать ещё один шаг и перейти на совсем свежие версии Селениума, Геккодрайвера и Фаерфокса?

И псмотреть как там работает тест?


  • 0

#4 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 24 мая 2019 - 09:38

Эта проблема решилась, поставил последние версии Селениума и гекодрайвера + мозиллу до 67 обновил. Но теперь другая проблема, похожая. Только тут  не мой метод на клик задействован, а просто обычный метод из файла webelement.py, метод click не может кликнуть куда нужно и приходит эксепшн: selenium.common.exceptions.ElementClickInterceptedException: Message: Element <a class="active" href="#tab1"> is not clickable at point (362,140) because another element <li class="tab1"> obscures it


  • 0

#5 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 мая 2019 - 09:41

А таких элементов точно один? Может их несколько и он кликает по первому попавшемуся, вот и не получается у него.


  • 0

#6 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 24 мая 2019 - 09:56

А таких элементов точно один? Может их несколько и он кликает по первому попавшемуся, вот и не получается у него.

да вроде один.
[/URL]">http://1711bbfa831a0c1c2b2965bedae31a40.png


  • 0

#7 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 24 мая 2019 - 10:00

Как сюда картинку вставить? какая то кривая форма вставки картинок в сообщение - Пишет Недопустимое расширение файла


  • 0

#8 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 24 мая 2019 - 10:05

Локатор проверяете же в браузере?


  • 0

#9 Darksol89

Darksol89

    Активный участник

  • Members
  • PipPip
  • 81 сообщений
  • ФИО:Иван
  • Город:Санкт-Петербург


Отправлено 24 мая 2019 - 10:37

Наконец то заработало! Всем спасибо за помощь)

 

элементы я искал по такому принципу - tabs = driver.find_elements(By.XPATH, "//div[@id='designTabs']/ul/li/а"). Если посмотреть код страницы, то нужные ссылки действительно находятся под элементами списка с тем же названием. Убрал из когда /а, т.е. получилось так: tabs = driver.find_elements(By.XPATH, "//div[@id='designTabs']/ul/li") и все заработало как надо, скрипт стал переключать табы как надо.


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных