python selenium 浏览器自动化遇到 Message: element click intercepted:解决办法(非延迟加载)

python selenium webdriver 浏览器自动化遇到 Message: element click intercepted: Element is not clickable at point(xx, xx). Other element would receive the click:解决问题。

问题详情:因为我要自动化,通过百家号上传视频,前面都很顺利,到了上传视频时,点击上传,却提示报错。我百度了很多解决办法,大多数都是说是要加 time.sleep 或者是 ui.WebDriverWait(driver,5) 等,一些等待加载的操作,可能在一般网页,确实能实现,但是到了JS动态加载的网页,可能不行。需要别的办法来实现了。


问题描述:

下面代码,是按照正常的网页去操作点击,这样操作是会报错的。

driver.find_element_by_xpath('//*[@id="root"]/div/div/div[1]/div/div/div[3]/div/div/div[2]/div[3]/div/div/div[2]/input')}.click()

报错如下:

selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div class="updataCoverBox" style="left: 400px; top: 80px; width: 680px; height: 382px;">...</div> is not clickable at point (558, 350). Other element would receive the click: <p class="video-online-edit-btn">...</p>
  (Session info: chrome=84.0.4147.125

解决方案:

解决办法就是:使用 execute_script() 功能,代码如下。注意在find_element_by_xpath(“path”).click().click(),这个函数要去掉。不然会报错。

button = driver.find_element_by_xpath('//*[@id="root"]/div/div/div[1]/div/div/div[3]/div/div/div[2]/div[3]/div/div/div[2]/input')
driver.execute_script("$(arguments[0]).click()",button)

上述办法仅适用于,JS动态加载 不可交互式元素的 input 点击事件。其他的提示无法找到元素标签的,可以在代码前,添加:time.sleep(你的秒数),前提是要导入time 函数。
或者是 : driver.refresh() #刷新网页/加载网页

  • 40
    点赞
  • 71
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 16
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宋哈哈呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值