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异常处理、模块与包
- Python异常处理与反射相关问题总结
- Python异常处理中容易犯得错误总结
- Python打包exe时各种异常处理方案总结
- python基础之文件操作和异常处理
- Python pip install之SSL异常处理操作
- 通过实例了解Python异常处理机制底层实现
- Python异常处理机制结构实例解析
- python异常处理之try finally不报错的原因
- python except异常处理之后不退出,解决异常继续执行的实现
- python异常处理和日志处理方式
- Python Django中间件,中间件函数,全局异常处理操作示例
- Python 异常处理总结