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

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

В 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 , но там описанное решение не помогло:(. может кто сталкивался и знает как разобраться?

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

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

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

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

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


        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 на странице. Причем кнопка находится в одном и то же месте на странице не зависимо от того, на какой части приложения пользователь бы не был.

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

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

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

1 лайк

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

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

1 лайк

try but this button is like link on html code:

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

 

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

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

 

 

 

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

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

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

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

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

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

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

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

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

2 лайка

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

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

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

Мне помогло в 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)")

1 лайк

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

((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", webElement;
webElement.click();
1 лайк

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

2 лайка

Вот еще решение для 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)

Поделюсь своим решением на С#:
В моём случае ошибка возникает из-за того, что элемент библиотеки Angular Material при загрузке страницы перекрывает другие элементы. К сожалению, со слов фронтенд разработчиков, скрыть или уменьшить этот элемент нельзя. Поэтому рекурсивно вызываю клик при эксепшене InvalidOperationException, который и выдает “Element is not clickable”

public void ClickRecursively(By elementLocator)
        {
            try
            {
                WebDriver.FindElement(elementLocator).Click();
            }
            catch (Exception InvalidOperationException)
            {
                ClickRecursively(elementLocator);
            }
            
        }