程序在没有发现此类元素异常后立即退出

问题描述 投票:0回答:1

我正在使用硒在python 2.7中开发一个刮刀。我面临的主要问题是我的程序在没有找到这样的元素异常之后立即终止。我尝试了几种解决方案,但没有任何效果。喜欢使用try catch等,这里是我尝试过的代码。

def check_exists_by_xpath(xpath):
    try:
        webdriver.find_element_by_xpath(xpath)
    except NoSuchElementException:
        return False
    return True

即使元素不存在,我希望程序恢复。任何人都可以提出解决方案如何做到这一点?我尝试了很多其他的东西,但没有任何作用。

错误信息:

    Traceback (most recent call last):

  File "bot2.py", line 22, in <module>

    driver.find_element_by_xpath(xpath)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 295, in find_element_by_xpath
    return self.find_element(by=By.XPATH, value=xpath)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 756, in find_element
    'value': value})['value']
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 238, in execute
    self.error_handler.check_response(response)
  File "C:\Python27\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 193, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="react-root"]/section/usama"}
  (Session info: chrome=59.0.3071.115)
  (Driver info: chromedriver=2.28.455520 (cc17746adff54984afff480136733114c6b3704b),platform=Windows NT 10.0.14393 x86_64)
python python-2.7 web-scraping selenium-chromedriver
1个回答
1
投票

尽可能避免使用try ... catch结构。

使用更方便的方法:

def check_exists_by_xpath(xpath):
    elnts = driver.find_elements_by_xpath(xpath)
    return len(elnts) > 0

请注意使用find_elements_by_xpath而不是find_element_by_xpath,它返回与XPath表达式对应的元素列表。如果未找到任何元素,则列表为空。

© www.soinside.com 2019 - 2024. All rights reserved.