Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

ошибки в Chrome - Element is not clickable at point

locators
webdriver
chrome
Теги: #<Tag:0x00007f7b6d711098> #<Tag:0x00007f7b6d710f08> #<Tag:0x00007f7b6d710dc8>

(lily) #1

Проблема в следующем.

В Chrome при попытке нажать на кнопку валится тест со следующей ошибкой "Caused by: org.openqa.selenium.WebDriverException: Element is not clickable at point (1391, 9). Other element would receive the click: <div id="overlay" style="display: block; position: absolute; left: 0px; top: 0px; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial;...." 

Искала в code.google , но там описанное решение не помогло:(. может кто сталкивался и знает как разобраться?

в ФФ  и ИЕ тест проходит отлично.


(Mykhailo Poliarush) #2

это вполне может быть баг в вебдрайвере

http://code.google.com/p/selenium/issues/detail?id=2750

выложите страницу, на которой вы производите действия, что можно было проверить


(lily) #3

тест выглядит следующим образом:


        driver.findElement(By.id("login-login")).clear();
        driver.findElement(By.id("login-login")).sendKeys("XXX");
        driver.findElement(By.id("login-password")).clear();
        driver.findElement(By.id("login-password")).sendKeys("1");
          driver.findElement(By.id("login-submit")).click();
        // click  link=120417543219 .problem in FF with xpath
        driver.findElement(By.xpath("//*[@id='ticket']/div[1]/table/tbody/tr/td/table/tbody/tr[3]/td[3]/a")).click();
       
        driver.findElement(By.linkText("Logout")).click();                               -в этом месте вылазит приведенная ошибка
      

Пробовала применять другой вариант поиска элемента на странице, не помогло, тест валится все там же:

          click | xpath=//a[18] |
        //driver.findElement(By.xpath("//a[18]")).click();

 

тест падает при нажатии на кнопку Logout на странице. Причем кнопка находится в одном и то же месте на странице не зависимо от того, на какой части приложения пользователь бы не был.

на прохождение теста никак не влияет полноэкранный режим браузера, вариация поиска элемента на странице и пр...магия какая- то....


(mbeider) #4

Did you try to find Logout button by id, not by linkText? If button content loaded in AJAX By the time you approach to click on button link still doesn't exist in DOM. Try to check if element available before to click on it


(Taras) #5

кто ж такой x-path пишет то ?))


(Mykhailo Poliarush) #6

попробуйте найти ваш элемент разными способами и было бы неплохо если бы вы выложили саму страницу, которую тестируете, а то так тяжело давать вам советы.


(Alexander Petrovich) #7

Тоже иногда сталкиваюсь с сабжем. Причем рандомно. При одном прогоне может упасть, при другом - всё отлично. Если проявится - дам код


(lily) #8

try but this button is like link on html code:

<a href="http://devmark.X.X/dev-logout.html">Logout</a>

 

насчет  xpath- разные варианты пробовались, не было времени вечером искать короткий вариант ))

сама страница доступна только внутри сети, к сожалению в лучшем случае могу сделать скриншот.

 

 

 


(lily) #9

да... вот не меняла ничего в коде. пришла сегодня запустила-опа и работает! ошибки нет. через час запустила-упал...

в чем дело  - остается загадкой


(Mykhailo Poliarush) #10

это похоже на баг, я вам предлагаю завести дефект на команду разработки вебдрайвера


(lily) #11

спасибо. так и сделаю..


(Alexander Petrovich) #12

дабы не плодить людям баги, поделитесь ссылкой потом, плиз


(lily) #13

http://code.google.com/p/selenium/issues/detail?id=2766

вот здесь есть обсудение такой же проблемы...


(Pavel Volkov) #14

Мне помогает такой код:

try{
el.click();
}catch (WebDriverException e){
JavascriptExecutor executor = (JavascriptExecutor)wd;
executor.executeScript(“arguments[0].click()”, el);
}


(Vjacheslav Lukashevich) #15

Вообще в сообщении ошибки - какой то div элемент при прогоне накрывает кнопку.
Может так оно и есть :slight_smile:

Что за overlay?
Из опыта:

  1. бывает div которая накрывает страницу во время загрузки - тогда надо дождатся чтобы исчез
  2. или div типа шапки сайта (как на этом сайте) накрыл вашу кнопку - тогда надо заскролится до элемента

#16

Мне помогло в python:

button_user = self.browser.css(".ZFr60d.CeoRYc")
ActionChains(self.browser).move_to_element(button_user).click().perform()

Можно поробывать и так:

browser.execute_script("window.scrollTo(0, 0)")


(Julian Kolodzey) #17

В моем случае помог скролл к элементу:

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", webElement;
webElement.click();

(TEmirlan) #18

Спасибо больше !! скролл помог ! если бы не вы я бы еще парился :slight_smile:


(Ru Gyron) #19

Вот еще решение для Python-кодеров - обычный тайм-аут:

try:
__driver.find_element_by_id(‘some_id’).click()
except:
__time.sleep(3)
__print(‘Сработало исключение!’)
__driver.find_element_by_id(‘some_id’).click()

time.sleep(2)

Вместо того, что было:

driver.find_element_by_id('some_id').click()

time.sleep(2)