元素点击截获硒

时间:2019-12-04 16:52:40

标签: python selenium

尝试单击更多视图直至页面结束时似乎出现此错误(直到我看不到“查看更多”选项),但收到此错误消息

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'

1 个答案:

答案 0 :(得分:-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调用将内容加载到页面上,并且“查看更多”按钮无法立即使用,从而导致您的代码出现恐慌。通读该答案,它可能会给您带来更多的见解,但您也可以尝试捕获该异常,将其延迟一小段时间,然后重试。