Python Selenium异常处理的实例分析


Posted in Python onFebruary 28, 2021

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中声明只包含一个元素的元组数据方法
Aug 25 Python
Python中不同进制的语法及转换方法分析
Jul 27 Python
浅析Python中yield关键词的作用与用法
Nov 29 Python
win7上python2.7连接mysql数据库的方法
Jan 14 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
python实现在IDLE中输入多行的方法
Apr 19 Python
python实现植物大战僵尸游戏实例代码
Jun 10 Python
在Python中os.fork()产生子进程的例子
Aug 08 Python
Anaconda3中的Jupyter notebook添加目录插件的实现
May 18 Python
用Python 爬取猫眼电影数据分析《无名之辈》
Jul 24 Python
详解python metaclass(元类)
Aug 13 Python
宝塔更新Python及Flask项目的部署
Apr 11 Python
python常量折叠基础知识点讲解
Feb 28 #Python
Django后端按照日期查询的方法教程
Feb 28 #Python
python元组拆包实现方法
Feb 28 #Python
python定义具名元组实例操作
Feb 28 #Python
python推导式的使用方法实例
Feb 28 #Python
python线程优先级队列知识点总结
Feb 28 #Python
利用Opencv实现图片的油画特效实例
Feb 28 #Python
You might like
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
php生成固定长度纯数字编码的方法
2015/07/09 PHP
ThinkPHP框架实现的MySQL数据库备份功能示例
2018/05/24 PHP
Gambit vs ForZe BO3 第三场 2.13
2021/03/10 DOTA
快速排序 php与javascript的不同之处
2011/02/22 Javascript
JS 控制小数位数的实现代码
2011/08/02 Javascript
扩展JavaScript功能的正确方法(译文)
2012/04/12 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
JS实现的打字机效果完整实例
2016/06/20 Javascript
JS点击某个图标或按钮弹出文件选择框的实现代码
2016/09/27 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
关于iframe跨域POST提交的方法示例
2017/01/15 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
jQuery事件绑定和解绑、事件冒泡与阻止事件冒泡及弹出应用示例
2019/05/13 jQuery
关于JS解构的5种有趣用法
2019/09/05 Javascript
vue 解决移动端弹出键盘导致页面fixed布局错乱的问题
2019/11/06 Javascript
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
python贪婪匹配以及多行匹配的实例讲解
2018/04/19 Python
Python 修改列表中的元素方法
2018/06/26 Python
django foreignkey(外键)的实现
2019/07/29 Python
Pytorch转onnx、torchscript方式
2020/05/25 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
Python pymsql模块的使用
2020/09/07 Python
美国知名的网上鞋类及相关服装零售商:Shoes.com
2017/05/06 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
成功经营餐厅的创业计划书范文
2013/12/26 职场文书
诉讼代理人授权委托书
2014/10/11 职场文书
优秀党员先进材料
2014/12/18 职场文书
董存瑞观后感
2015/06/11 职场文书
教师节随笔
2015/08/15 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
插件导致ECharts被全量引入的坑示例解析
2022/09/23 Javascript