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基于mysql实现的简单队列以及跨进程锁实例详解
Jul 07 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
python实现通过代理服务器访问远程url的方法
Apr 29 Python
Python二分查找详解
Sep 13 Python
Python人脸识别初探
Dec 21 Python
python构建深度神经网络(续)
Mar 10 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Python实现将多个空格换为一个空格.md的方法
Dec 20 Python
Python使用os.listdir和os.walk获取文件路径
May 21 Python
什么是Python中的匿名函数
Jun 02 Python
python安装后的目录在哪里
Jun 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的Yii框架中View视图的使用进阶
2016/03/29 PHP
thinkPHP多域名情况下使用memcache方式共享session数据的实现方法
2016/07/21 PHP
PHP基于GD库的图像处理方法小结
2016/09/27 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
另一个javascript小测验(代码集合)
2011/07/27 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
代码分析jQuery四种静态方法使用
2015/07/23 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
使用CoffeeScrip优美方式编写javascript代码
2015/10/28 Javascript
拖动时防止选中
2017/02/03 Javascript
js原生实现移动端手指滑动轮播图效果的示例
2018/01/02 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
webpack4+express+mongodb+vue实现增删改查的示例
2018/11/08 Javascript
详解Vue SSR( Vue2 + Koa2 + Webpack4)配置指南
2018/11/13 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
RxJS的入门指引和初步应用
2019/06/15 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
Vue 同步异步存值取值实现案例
2020/08/05 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
vue二选一tab栏切换新做法实现
2021/01/19 Vue.js
[02:38]2018DOTA2亚洲邀请赛赛前采访-VGJ.T
2018/04/03 DOTA
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
浅谈Python 递归算法指归
2019/08/22 Python
使用Python的Turtle绘制哆啦A梦实例
2019/11/21 Python
django实现后台显示媒体文件
2020/04/07 Python
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
婚礼证婚人演讲稿
2014/09/13 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
公务员政审材料范文
2014/12/23 职场文书
公司食堂管理制度
2015/08/05 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS
教你用Java在个人电脑上实现微信扫码支付
2021/06/13 Java/Android
分析Python list操作为什么会错误
2021/11/17 Python
CSS的calc函数用法小结
2022/06/25 HTML / CSS
vue3 自定义图片放大器效果的示例代码
2022/07/23 Vue.js
不想升级Win11?教你彻底锁定老版Windows系统的方法(附下载地址)
2022/09/23 数码科技