Selenium-Debugging: элемент не может быть нажат в точке (X, Y)
Я пытаюсь очистить этот сайт от Selenium.
Я хочу щелкнуть по ссылке "Следующая страница", для этого я:
driver.find_element_by_class_name('pagination-r').click()
он работает для многих страниц, но не для всех, я получил эту ошибку
WebDriverException: Message: Element is not clickable at point (918, 13). Other element would receive the click: <div class="linkAuchan"></div>
всегда для этой страницы
Я прочитал этот вопрос
и я попробовал это
driver.implicitly_wait(10)
el = driver.find_element_by_class_name('pagination-r')
action = webdriver.common.action_chains.ActionChains(driver)
action.move_to_element_with_offset(el, 918, 13)
action.click()
action.perform()
но я получил ту же ошибку
Ответы
Ответ 1
Другой элемент - это элемент, на который вы пытаетесь щелкнуть. Вы можете использовать execute_script()
, чтобы нажать на это.
element = driver.find_element_by_class_name('pagination-r')
driver.execute_script("arguments[0].click();", element)
Ответ 2
У меня была аналогичная проблема, когда использование ActionChains не решало мою ошибку: WebDriverException: Сообщение: неизвестная ошибка: элемент не доступен для клика в точке (5 74, 892)
Я нашел хорошее решение, если вы не хотите использовать execute_script:
from selenium.webdriver.common.keys import Keys #need to send keystrokes
inputElement = self.driver.find_element_by_name('checkout')
inputElement.send_keys("\n") #send enter for links, buttons
или
inputElement.send_keys(Keys.SPACE) #for checkbox etc
Ответ 3
Используйте явное ожидание вместо неявного.
new WebDriverWait(TestingSession.Browser.WebDriver, TimeSpan.FromSeconds(10)).Until(ExpectedConditions.ElementExists((By.ClassName("pagination-r'"))));