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
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新日志
- 中国武警男声合唱团《辉煌之声1天路》[DTS-WAV分轨]
- 紫薇《旧曲新韵》[320K/MP3][175.29MB]
- 紫薇《旧曲新韵》[FLAC/分轨][550.18MB]
- 周深《反深代词》[先听版][320K/MP3][72.71MB]
- 李佳薇.2024-会发光的【黑籁音乐】【FLAC分轨】
- 后弦.2012-很有爱【天浩盛世】【WAV+CUE】
- 林俊吉.2012-将你惜命命【美华】【WAV+CUE】
- 晓雅《分享》DTS-WAV
- 黑鸭子2008-飞歌[首版][WAV+CUE]
- 黄乙玲1989-水泼落地难收回[日本天龙版][WAV+CUE]
- 周深《反深代词》[先听版][FLAC/分轨][310.97MB]
- 姜育恒1984《什么时候·串起又散落》台湾复刻版[WAV+CUE][1G]
- 那英《如今》引进版[WAV+CUE][1G]
- 蔡幸娟.1991-真的让我爱你吗【飞碟】【WAV+CUE】
- 群星.2024-好团圆电视剧原声带【TME】【FLAC分轨】