【问题标题】:Element click intercepted selenium元素点击拦截硒
【发布时间】:2019-12-04 16:52:40
【问题描述】:

尝试单击查看更多直到页面末尾时似乎收到此错误(直到我没有看到查看更多选项),但收到此错误消息

ElementClickInterceptedException               14 wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'select2-result-label'))).click()
     15 while True:
---> 16     wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()
     17     try:
     18         element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
ElementClickInterceptedException: Message: element click intercepted: Element is not clickable at point (231, 783)
  (Session info: chrome=78.0.3904.108)

这是我的代码

while True:
    wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()
    try:
        element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
        element.click()
    except TimeoutException:
        break

这是网站的 html

<a class="view_more" href="javascript:void(0);" onclick="_search('0')">VIEW MORE ...</a>

这是网站

page_link = 'http://beta.compuboxdata.com/fighter'

【问题讨论】:

  • 这个问题可能会有所帮助:stackoverflow.com/questions/38327049/…
  • 该网站有一些古怪的 javascript,需要修复。不知道为什么,但它做的第一件事是发布数据......并且链接对我不起作用。 (使用 Chrome)

标签: python selenium


【解决方案1】:

首先,为什么同一行代码会以两种不同的方式重复?

wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more'))).click()

在功能上等同于:

try:
    element = wait.until(EC.visibility_of_element_located((By.CLASS_NAME, 'view_more')))
    element.click()
except TimeoutException:
    break

保存用于处理超时异常。 我只会删除第一行,因为我看不到其中的意义。 关于您的实际问题,请参阅此堆栈溢出问题的答案:https://stackoverflow.com/a/44916498/3715974

我最好的猜测是,这是由于 javascript/ajax 调用将内容加载到页面上,而查看更多按钮无法立即使用,导致您的代码出现恐慌。通读那个答案,它可能会给你更多的洞察力,但你也可以尝试简单地捕捉那个异常,延迟一小段时间,然后再试一次。

【讨论】:

  • 可能弄错了,但添加了第一行,因为我想一直点击查看更多直到页面结束
  • 该块被封装在一个 while True 循环中,它已经通过无限期地运行点击行来做到这一点。无需每次循环点击 2 次,事实上这会给您带来错误,因为循环中的第一次“点击”没有处理超时异常,可能会导致错误。
猜你喜欢
  • 2020-08-07
  • 2021-02-26
  • 2021-09-04
  • 2022-11-13
  • 2019-11-08
  • 2022-01-05
  • 2021-10-28
  • 2020-02-13
  • 1970-01-01
相关资源
最近更新 更多