Получение исключения ElementClickIntercepted в браузере Firefox, поскольку всплывающее окно мешает (хром работает нормально)

1. На моем сайте появляется всплывающее окно с новостной рассылкой.

2. Этот всплывающий модальный информационный бюллетень может появиться на любой странице в течение 3 минут, поэтому я не могу засечь время.

  1. Это приводило к сбою моего сценария автоматизации (с использованием geb-spock).

  2. Чтобы теперь показывать всплывающее окно информационного бюллетеня, я добавил файлы cookie ниже.

driver.manage().addCookie(new Cookie("signupNoThanks", "optedNoThanks"));

Сообщение об ошибке

 `selenium.ElementClickInterceptedException` error i.e `Element <element1> is not clickable at point (1085,112) because another element <Newletter pop up modal> obscures it`

Я пытался распечатать куки и вижу это в логах

[![Журнал файлов cookie ss][1]][1]

Может ли кто-нибудь подсказать, что не так в браузере Firefox, файлы cookie, добавленные мной, отлично работают в Chrome, но иногда не проходят некоторые автоматические тестовые случаи в Firefox. Firefox блокирует нас из-за каких-то соображений безопасности? [1]: https://i.stack.imgur.com/lS1r7.png


person Shubhendu Pandey    schedule 22.09.2020    source источник
comment
Ваш установочный код не очень помогает определить основную причину проблемы. Куки вроде бы есть, почему вы думаете, что это не так? Видите ли вы на скриншотах, что модальное окно есть, несмотря на куки? Вы не то описали. Кроме того, вы пробовали локально с Firefox? Может быть, это Firefox, а не BrowserStack. Узнайте, что такое MCVE и как задавать хорошие вопросы. Никто не может читать ваши мысли, поэтому вам нужно четко описать свою проблему и в идеале сделать ее воспроизводимой.   -  person kriegaex    schedule 23.09.2020


Ответы (2)


Ошибка, похоже, связана с файлами cookie, поскольку вы можете видеть файлы cookie в журнале. Ошибка «Элемент не интерактивен» — это общая ошибка, о которой вы можете узнать больше на Selenium Web Driver & Java. Элемент не кликабельный в точке (x, y). Другой элемент получит клик

Попробуйте следующие способы устранения этой ошибки

  • Попробуйте использовать другой селектор, например XPath, чтобы найти элемент.
  • Элемент не виден в области просмотра, не могли бы вы попробовать прокрутить элемент, прежде чем нажимать на него?
  • Используйте класс Actions для выполнения клика.
person HN17    schedule 22.09.2020
comment
Проблема с всплывающим окном заключается в том, что оно случайное, иногда оно появляется, а иногда нет, а также мы не знаем, когда оно появится, всплывающее окно может появиться в течение 3 минут. - person Shubhendu Pandey; 23.09.2020

Вы можете создать метод расширения для кликов, используемых во всем проекте, и обернуть его в исключение try catch для перехваченного элемента. Затем вы можете принять всплывающее окно и продолжить как обычно, не заботясь об этом.

(ниже код С#):

public static class SeleniumExtensions
{
   public static void ClickElement(this IWebElement element)
   {
      try
        {
          element.Click();
        } catch (ElementClickInterceptedException ex)
        {
          Console.WriteLine("Click was intercepted, attempting to dismiss pop up: ", ex);
          //Code to click or dismiss your popup goes here

          //retry click
          element.Click();
        }
    }
}

Затем во всем проекте вместо использования селена по умолчанию используйте:

element.ClickElement();
person Rushby    schedule 28.09.2020