解决在使用Selenium调用click事件时报错 Element:ElementClickInterceptedException

在用 Selenium + Chrome 处理一个爬虫问题时,调用了一个元素的 click() 方法模拟点击事件,但是有些时候代码会返回 error: Message: element click intercepted 的错误。本文分享下错误原因和解决方法。

一、问题描述与原因
代码:
_browser.find_element_by_id(‘opt204163622’).click()
错误信息:

error: Message: element click intercepted: Element

  • is not clickable at point (407, 585). Other element would receive the click:
    (Session info: headless chrome=86.0.4240.111)

    这个错误并不是 100% 出现的,有时候代码能得到期望的结果,有时候则会返回错误。错误的原因从错误信息里也能清楚看出来:所选的元素并不能点击,因为它被另一个元素覆盖了。

    二、问题解决方法
    出现这个问题的原因是网页还没有加载成功,所以主要找到两个解决思路:

    等待网站加载完成
    使用另一个方式调用 Selenium click 事件

    解决方法一:

    设置 Selenium 等待时间:browser.set_page_load_timeout(60),并通过 time.sleep(30) 来等待网站加载,但是还是不能 100% 解决问题。

    解决方法二:

    使用另一个调用 click 事件的方法代替 click() 方法:

    _item = _browser.find_element_by_id('opt204163622')
    _browser.execute_script("arguments[0].click();", _item)

    解决方法三:
    网上还有一种方案也可以代替 click() 方法解决这个错误,大家也可以尝试下:

    element = driver.find_element_by_id('opt204163622')
    webdriver.ActionChains(driver).move_to_element(element ).click(element ).perform()

    原文:https://laowangblog.com/selenium-element-click-intercepted.html

    赞(0)
    版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权,转载请注明出处。
    文章名称:《解决在使用Selenium调用click事件时报错 Element:ElementClickInterceptedException》
    文章来自:泰恩数据
    文章链接:https://tyne.cc/1043.html
    本站资源仅供个人学习使用,请勿用于商业用途。

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址