Python Selenium异常处理的实例分析
1、说明
在使用selenium时,不可避免的会遇到一些异常情况,比如超时、没有找到节点的错误等等。一旦出现这样的错误,程序就不能再运行了。这里我们可以使用tryexcept语句来捕捉异常。
2、实例
from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException browser = webdriver.Chrome() try: browser.get('https://www.baidu.com') except TimeoutException: print('超时') try: browser.find_element_by_id('aa') except NoSuchElementException: print('未找到节点') finally: browser.close()
关于异常处理的实例扩展:
我是Python的新手,我正在尝试编写一个使用硒登录到Web应用程序并打印一些信息的nagios脚本。到目前为止,该脚本可以按预期工作,但是如果它无法检索该网站,我希望它向系统发出警报。这是我所拥有的
#!/usr/bin/env python import sys from selenium import webdriver url = '<main web site>' systemInformation = '<sys information site>' logout = '<log out link>' browser = webdriver.PhantomJS('<path to phantomjs for headless operation>') login_username = '<username>' login_password = '<password>' try: browser.get(url) username = browser.find_element_by_name("username") password = browser.find_element_by_name("password") username.send_keys(login_username) password.send_keys(login_password) link = browser.find_element_by_name('loginbutton') link.click() browser.get(systemInformation) print "OK: Web Application is Running" for element in browser.find_elements_by_name('SystemReportsForm'): print element.text browser.get(logout) browser.quit() sys.exit(0) except: print "WARNING: Web Application is Down!" sys.exit(2)
我希望如果第一部分失败,那么它将转到except部分,但是即使有出口,脚本也会打印出try和except。我确定这很简单,我很想念。
这就是我最终解决此问题的方式,感谢您的帮助
#!/usr/bin/env python import sys, urllib2 from selenium import webdriver url = '<log in url>' systemInformation = '<sys info url>' logout = '<logout url>' browser = webdriver.PhantomJS('<phantomjs location for headless browser>') login_username = '<user>' login_password = '<password>' def login(login_url,status_url): browser.get(login_url) username = browser.find_element_by_name("username") password = browser.find_element_by_name("password") username.send_keys(login_username) password.send_keys(login_password) link = browser.find_element_by_name('loginbutton') link.click() browser.get(status_url) if browser.title == 'Log In': print "WARNING: Site up but Failed to login!" browser.get(logout) browser.quit() sys.exit(1) else: print "OK: Everything Looks Good" for element in browser.find_elements_by_name('SystemReportsForm'): print element.text browser.get(logout) browser.quit() sys.exit(0) req = urllib2.Request(url) try: urllib2.urlopen(req) login(url,systemInformation) except urllib2.HTTPError as e: print('CRITICAL: Site Appears to be Down!') browser.get(logout) browser.quit() sys.exit(2)
解决方案
sys.exit([status])引发SystemExit(status)异常,这就是执行except子句的原因
通过提高SystemExit(status)退出解释器。如果省略状态或无,则默认为零(即成功)。如果状态为整数,则将其用作系统退出状态。如果是另一种对象,则将其打印出来,并且系统退出状态将为1(即失败)。
删除sys.exit(0)内部try
到此这篇关于Python Selenium异常处理的实例分析的文章就介绍到这了,更多相关Python Selenium异常处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
python爬虫入门教程--利用requests构建知乎API(三)
这篇文章主要给大家介绍了关于python爬虫入门之利用requests构建知乎API的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。2017-05-05详解Anconda环境下载python包的教程(图形界面+命令行+pycharm安装)
这篇文章主要介绍了Anconda环境下载python包的教程(图形界面+命令行+pycharm安装),这篇文章很适合小白入手级别的,本文图文并茂给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-11-11Python学习笔记基本数据结构之序列类型list tuple range用法分析
这篇文章主要介绍了Python学习笔记基本数据结构之序列类型list tuple range用法,结合具体实例形式分析了Python序列类型list tuple range基本概念、定义与使用技巧,需要的朋友可以参考下2019-06-06在Python的Django框架中实现Hacker News的一些功能
这篇文章主要介绍了在Python的Django框架中实现Hacker News的一些功能,包括投票“顶”评论等功能,需要的朋友可以参考下2015-04-04
最新评论