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面向对象程序设计OOP深入分析【构造函数,组合类,工具类等】
Jan 05 Python
使用PIL(Python-Imaging)反转图像的颜色方法
Jan 24 Python
python字典嵌套字典的情况下找到某个key的value详解
Jul 10 Python
python多进程间通信代码实例
Sep 30 Python
pycharm运行程序时看不到任何结果显示的解决
Feb 21 Python
django实现日志按日期分割
May 21 Python
python读取hdfs上的parquet文件方式
Jun 06 Python
Python嵌入C/C++进行开发详解
Jun 09 Python
Keras 利用sklearn的ROC-AUC建立评价函数详解
Jun 15 Python
Python读取多列数据以及用matplotlib制作图表方法实例
Sep 23 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
Nov 06 Python
python scrapy简单模拟登录的代码分析
Jul 21 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/11/07 PHP
PHP中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
php实现的简单中文验证码功能示例
2017/01/03 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
2017/10/11 PHP
PHP注释语法规范与命名规范详解篇
2018/01/21 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
二级域名或跨域共享Cookies的实现方法
2008/08/07 Javascript
用户注册常用javascript代码
2009/08/29 Javascript
基于jquery的一个图片hover的插件
2010/04/24 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
javascript事件冒泡详解和捕获、阻止方法
2014/04/12 Javascript
深入分析JSONP跨域的原理
2014/12/10 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
javascript显示倒计时控制按钮的简单实现
2016/06/07 Javascript
JavaScript ES5标准中新增的Array方法
2016/06/28 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
基于input框覆盖掉数字英文的实例讲解
2017/07/21 Javascript
vue打包之后生成一个配置文件修改接口的方法
2018/12/09 Javascript
爬虫利器Puppeteer实战
2019/01/09 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
[05:41]2014DOTA2西雅图国际邀请赛 小组赛7月10日TOPPLAY
2014/07/10 DOTA
Python中的闭包实例详解
2014/08/29 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
pandas 转换成行列表进行读取与Nan处理的方法
2018/10/30 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
2020/09/01 Python
python中实现词云图的示例
2020/12/19 Python
英国专业美容产品在线:Mylee(从指甲到脱毛)
2020/07/06 全球购物
JMS中Topic和Queue有什么区别
2013/05/15 面试题
国际贸易实务实训报告
2014/11/05 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
2016五一劳动节慰问信
2015/11/30 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
如何解决flex文本溢出问题小结
2022/07/15 HTML / CSS