Selenium Web Driver & Java. Element is not clickable at point (x, y). Other element would receive the click
Веб-драйвер Selenium и Java. Элемент недоступен для клика в точке (x, y). Другой элемент получит щелчок
Я использовал явное ожидание, и у меня появилось предупреждение:
org.openqa.selenium.Исключение WebDriverException: элемент недоступен для клика в точке (36, 72). Другой элемент получит щелчок: ... Длительность команды или тайм-аут: 393 миллисекунды
Если я использую Thread.sleep(2000), я не получаю никаких предупреждений.
BASE_SUPPORT_URL : protected static final java.lang.String BASE_SUPPORT_URL
DRIVER_INFO : public static final java.lang.String DRIVER_INFO
SESSION_ID : public static final java.lang.String SESSION_ID
Что касается вашего индивидуального варианта использования, ошибка говорит сама за себя :
WebDriverException: Element is not clickable at point(x, y). Other element would receive the click
Из вашего блока кода ясно, что вы определили wait как WebDriverWait wait = new WebDriverWait(driver, 10);, но вы вызываете click() метод для элемента до того, как ExplicitWait вступит в действие , как в until(ExpectedConditions.elementToBeClickable).
Решение
Ошибка Element is not clickable at point (x, y) может быть вызвана различными факторами. Вы можете устранить их с помощью любой из следующих процедур:
1. Элемент не кликается из-за присутствия вызовов JavaScript или AJAX
Я столкнулся с этой ошибкой при попытке щелкнуть какой-либо элемент (или его наложение, мне было все равно), и другие ответы у меня не сработали. Я исправил это, используя elementFromPoint DOM API, чтобы найти элемент, на который Selenium хотел, чтобы я щелкнул вместо этого:
У меня также были ситуации, когда элемент перемещался, например, потому, что элемент над ним на странице выполнял анимированное развертывание или сворачивание. В этом случае помог этот класс ожидаемых условий. Вы указываете ему элементы, которые анимированы, а не те, на которые вы хотите щелкнуть. Эта версия работает только для анимации jQuery.
def __call__(self, driver): try: elements = EC._find_elements(driver, self.locator) # :animated is an artificial jQuery selector for things that are # currently animated by jQuery. return driver.execute_script( 'return !jQuery(arguments[0]).filter(":animated").length;', elements) except StaleElementReferenceException: return False