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

时间:2017-07-03 09:20:40

标签: python python-2.7 web-scraping selenium-chromedriver

我正在使用硒在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)

1 个答案:

答案 0 :(得分: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表达式对应的元素列表。如果没有找到元素,则列表为空。