重新封装click以解决element click intercepted
时间: 2024-01-09 13:45:14 浏览: 31
当网页中的元素被其他元素遮挡时,就会出现 "element click intercepted" 的错误。这个错误可以通过重新封装 click 函数来解决。
以下是一个示例函数:
```python
import time
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
def click_element(driver, locator):
MAX_WAIT_TIME = 10 # 最长等待时间
INTERVAL = 0.5 # 间隔时间
element = WebDriverWait(driver, MAX_WAIT_TIME).until(EC.element_to_be_clickable(locator))
# 使用 ActionChains 将鼠标移动到元素上
ActionChains(driver).move_to_element(element).perform()
# 等待一段时间,确保元素已完全加载
time.sleep(INTERVAL)
# 点击元素
element.click()
```
该函数接受两个参数:`driver` 和 `locator`。`driver` 是一个已经初始化的 WebDriver 对象,`locator` 是一个元组,用于指定要点击的元素的定位方式和定位字符串。
该函数使用 `WebDriverWait` 等待元素可点击,并使用 `ActionChains` 将鼠标移动到元素上,以确保元素已经完全加载。然后等待一段时间,最后点击元素。
你可以在需要点击元素的地方调用该函数,如:
```python
locator = (By.ID, "my_button")
click_element(driver, locator)
```
这样,就可以避免出现 "element click intercepted" 的错误了。