问题描述:
使用selenium点击某个元素时发生报错:
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
(Session info: chrome=101.0.4951.67)
报错原因:
ElementNotInteractableException异常通常表示元素无法与之交互,也就是无法被点击、输入等。
这可能是由于以下原因之一:
元素被其他元素遮挡。
元素处于不可交互状态,例如元素处于禁用状态或隐藏状态。
元素没有被完全加载或渲染。
点击的位置不正确,例如元素位于屏幕的边缘或滚动区域之外。
解决方法:
以下是一些可能的解决方案:
确保元素没有被其他元素遮挡。可以使用execute_script()方法将元素滚动到视野范围内,或者使用ActionChains类模拟鼠标操作。
确保元素处于可交互状态。可以使用WebDriverWait类等待元素变为可交互状态,或者通过JavaScript来修改元素状态。
确保元素已经被完全加载或渲染。可以使用WebDriverWait类等待元素的加载或渲染完成。
确保点击的位置正确。可以使用location_once_scrolled_into_view属性将元素滚动到视野范围内,或者使用ActionChains类模拟鼠标操作。
以下是一个示例代码,演示如何使用ActionChains类模拟鼠标操作:
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChainsfrom selenium.webdriver.common.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as EC# 创建WebDriver对象,此处使用Chrome浏览器driver = webdriver.Chrome()# 打开目标网页driver.get("https://www.example.com")# 等待目标元素加载完成element = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "target_element")))# 创建ActionChains对象,模拟鼠标操作actions = ActionChains(driver)actions.move_to_element(element).click().perform()# 关闭浏览器driver.quit()
在这个例子中,我们使用WebDriverWait类等待目标元素加载完成,并使用ActionChains类模拟鼠标移动和点击操作。如果元素无法被点击,就会抛出ElementNotInteractableException异常。
来源地址:https://blog.csdn.net/weixin_43941438/article/details/129279174