首页 > 解决方案 > 硒python在NoSuchElementException之后继续

问题描述

我遇到了硒异常的问题:NoSuchElementException。

代码示例:

from selenium.common.exceptions import NoSuchElementException

try:
    popup = browser.find_element_by_xpath('//*)
    popup.click()
except NoSuchElementException:
    pass

有了这个,我在具有上述错误类型的 Django 框架上崩溃了。我需要的是通过这个异常并继续程序。一种选择是使用:

except:
    pass

但我需要收集异常元素。

整体元素被浏览器找到但无法点击:

Message: element click intercepted: Element <a class="dropdown-toggle" data-toggle="dropdown" href="#" rel="nofollow">...</a> is not clickable at point (654, 570).

谢谢你的任何建议。

标签: python-3.xselenium

解决方案


你可以在没有 try..catch 的情况下实现这一点。检查元素的长度,如果大于 0,则转到 if 块并执行 else 任何你想做的事情。

if len(browser.find_elements_by_xpath('//*'))>0:
    popup =browser.find_element_by_xpath('//*')
    popup.click()
else:
    print("pass")

或者您可以简单地使用 if 块。

if len(browser.find_elements_by_xpath('//*'))>0:
    popup =browser.find_element_by_xpath('//*')
    popup.click()

编辑

诱导WebDriverWait并等待element_to_be_clickable()

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

if len(browser.find_elements_by_xpath('//*'))>0:
    popup =WebDriverWait(browser,10).until(EC.element_to_be_clickable((By.XPATH,"//*")))
    popup.click()
else:
    print("pass")

推荐阅读