Элемент не кликабельный в Firefox

У меня проблема с такой ошибкой:

Элемент не кликабельный в точке (791, 394). Другой элемент получит щелчок: Продолжительность или время ожидания команды: 66 миллисекунд.

Кто-нибудь знает о чем? Я использую веб-драйвер Selenium 2.52 и Firefox версии 43.5.

Это часть кода:

private static void waitForLoadingSpinner() throws Exception {
    log("wait for loading spinner");
    Thread.sleep(1000);
    element = wait.until(ExpectedConditions.presenceOfElementLocated(By.xpath("//div[@id='loadingGlassPane']")));           
    element.click();
    wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("//div[@id='loadingGlassPane']")));

Например, после проверки городов моя кнопка «Подать заявку» не работает.

введите здесь описание изображения

введите здесь описание изображения


person marija    schedule 23.09.2016    source источник
comment
Кажется, это одна из классических ошибок автоматизации, другой элемент перекрывает элемент, который вы хотите щелкнуть в этот момент. В этом случае вам нужно дождаться, пока элемент станет видимым.   -  person lauda    schedule 23.09.2016
comment
Можешь поделиться сайтом? Либо элемент не виден, либо обнаруживается несколько элементов.   -  person Kishan Patel    schedule 23.09.2016
comment
Существует ли какая-либо полоса загрузки, когда вы собираетесь щелкнуть элемент желания ??   -  person Saurabh Gaur    schedule 23.09.2016
comment
@Lauda: Сколько мне нужно ждать? Есть ли что-нибудь, чтобы добавить к приведенному выше коду, чтобы избежать этой ситуации?   -  person marija    schedule 23.09.2016
comment
Добавьте точку останова или что-то еще и посмотрите, что произойдет, может быть, вам нужно подождать несколько секунд, может быть, вам нужно что-то еще, например, прокрутить вверх или сосредоточиться на другом элементе. Иногда ожидание не решает проблему. Если у вас есть загрузчик, который запускается какими-то действиями, вам нужно дождаться исчезновения загрузчика или использовать ожидание, пока элемент будет виден со временем (отображается время загрузчика + 1 ) секунд.   -  person lauda    schedule 23.09.2016
comment
@Kishan@Saurabh: Я добавил свою картинку-фильтр   -  person marija    schedule 23.09.2016
comment
Не предоставляйте изображения кода, иначе вы получите изображения исправления! Вы должны предоставить код и разметку, а не их изображения.   -  person Rob    schedule 27.09.2016
comment
@Rob: я не вижу смысла писать html-часть из элемента проверки? Но если это требование, то полезно знать :).   -  person marija    schedule 27.09.2016
comment
Вы спрашиваете, почему элемент не кликабельный. Единственный способ выяснить это — просмотреть HTML и CSS. Если кто-то хочет помочь, создав собственную тестовую страницу, картинка заставит его напечатать ваш пример вручную.   -  person Rob    schedule 27.09.2016


Ответы (3)


Попробуйте со следующим кодом.

WebDriverWait wait =new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.elementToBeClickable(By locator)).click();
person Sandipan Pramanik    schedule 23.09.2016
comment
Я пробовал внутри своего кода, но ничего не происходит. Я не знаю, что означает эта ошибка. - person marija; 23.09.2016
comment
@marija, кажется, ты пытаешься дождаться исчезновения счетчика загрузки. Если это так, то вам не нужно нажимать на него. Кажется, счетчик загрузки исчезает перед действием щелчка, поэтому ошибка говорит, что другой элемент получит щелчок. - person Sandipan Pramanik; 23.09.2016
comment
Я увеличил поток .sleep на 2000, а также удалил click(), но все равно получаю ту же ошибку :( - person marija; 23.09.2016
comment
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath(//div[@id='loadingGlassPane']))); - person marija; 26.09.2016

Из моего собственного опыта: при запуске автоматизации в Firefox, если вы хотите нажать кнопку додзё (кажется, что вы используете), вы можете сделать это двумя способами:

1) Вы должны найти «кликабельный» узел — посмотрите на картинку ниже введите здесь описание изображения

2) Используйте свою оригинальную кнопку, но звоните: actions.moveToElement(yourButton).click()

person Linh Nguyen    schedule 24.09.2016
comment
Я попробовал второе решение, но оно дает сбой... Может быть, вы знаете, как мне изменить эту строку? Потому что я думаю, что это проблема. Я хотел бы изменить это, если не найти элемент, чтобы щелкнуть любое другое место в браузере? Мой код работает, но после некоторого обновления сервера появляется проблема с этим элементом. - person marija; 26.09.2016
comment
Вы сказали, что он падает. Можете ли вы показать, какую ошибку он выдал? Кстати, вы пробовали делать те же шаги вручную в Firefox? - person Linh Nguyen; 26.09.2016
comment
Я сделал так: элемент WebElement = driver.findElement(By.xpath(//*[@id='loadingGlassPane'])); Действия действия = новые действия (драйвер); action.moveToElement(элемент).click().perform(); но все же этот фильтр как-то спрятан... - person marija; 26.09.2016

Я решил свою проблему, добавив эту часть:

     JavascriptExecutor js = (JavascriptExecutor)driver;
     js.executeScript("scroll(250, 0)");
     js.executeScript("scroll(0, 250)");

Надеюсь, это поможет кому-то :)

С Уважением

person marija    schedule 27.09.2016