webdriver 报错:Element is not clickable at point (993, 61). Other element would receive the click

一个月以前利用python写爬虫,爬去微博的数据,以前还好好地,放假回家就没有跑程序,今天回来一跑程序,竟然 webdriver 报错:Element is not clickable at point (993, 61). Other element would receive the click。打开网页源代码查找发现了问题,微博优化了界面,以前的定位元素不起作用了。
以前用self.browser.find_element_by_link_text(“帐号登录”).click()来定位,出现了重复性的问题,将其转化为self.browser.find_element_by_css_selector(“.tab_bar>a”).click()进行精准定位,这样才解决了登录问题。爬虫这个东西就是要和反爬虫不断做斗争。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`ElementClickInterceptedException` 异常通常是由于要点击的元素被其他元素遮挡或覆盖而无法被点击。这种情况下,可以尝试以下方法解决该异常: 1. 使用 `WebDriverWait` 等待要点击的元素可见并可点击,然后再进行点击操作。例如: ```python from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待10秒直到元素可以被点击 checkbox = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//input[@type='checkbox' and @name='all']"))) checkbox.click() ``` 2. 在点击要点击的元素之前,使用 `execute_script()` 方法执行一段 JavaScript 代码,将要点击的元素滚动到可见区域。例如: ```python checkbox = driver.find_element_by_xpath("//input[@type='checkbox' and @name='all']") driver.execute_script("arguments[0].scrollIntoView();", checkbox) checkbox.click() ``` 3. 如果要点击的元素被覆盖,可以尝试点击覆盖它的元素的父元素或祖先元素,或者使用 `ActionChains` 类模拟鼠标移动和点击操作。例如: ```python from selenium.webdriver.common.action_chains import ActionChains checkbox = driver.find_element_by_xpath("//input[@type='checkbox' and @name='all']") parent_element = checkbox.find_element_by_xpath("..") # 获取父元素 ActionChains(driver).move_to_element(parent_element).click().perform() # 模拟鼠标移动和点击操作 ``` 以上方法可以在不同的情况下解决 `ElementClickInterceptedException` 异常。如果仍然无法解决问题,可以检查页面元素的布局和结构,或者尝试使用其他的定位方法来定位要点击的元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值