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入门篇之面向对象
Oct 20 Python
python的类方法和静态方法
Dec 13 Python
Python实现列表转换成字典数据结构的方法
Mar 11 Python
python if not in 多条件判断代码
Sep 21 Python
基于python中pygame模块的Linux下安装过程(详解)
Nov 09 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
详解如何用django实现redirect的几种方法总结
Nov 22 Python
python encrypt 实现AES加密的实例详解
Feb 20 Python
vscode写python时的代码错误提醒和自动格式化的方法
May 07 Python
Python操作Excel把数据分给sheet
May 20 Python
编写python代码实现简单抽奖器
Oct 20 Python
python 使用csv模块读写csv格式文件的示例
Dec 02 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 Parse Error: syntax error, unexpected $end 错误的解决办法
2012/06/05 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
PHP检测用户语言的方法
2015/06/15 PHP
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
AngularJS实现按钮提示与点击变色效果
2016/09/07 Javascript
JS实现页面进入和返回定位到具体位置
2016/12/08 Javascript
jQuery实现CheckBox全选、全不选功能
2017/01/11 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
js插件实现图片滑动验证码
2020/09/29 Javascript
JS二分查找算法详解
2017/11/01 Javascript
js中this对象用法分析
2018/01/05 Javascript
Jquery实现获取子元素的方法分析
2019/08/24 jQuery
vue-property-decorator用法详解
2019/12/12 Javascript
[04:55]完美世界副总裁蔡玮:DOTA2的自由、公平与信任
2013/12/18 DOTA
python单链表实现代码实例
2013/11/21 Python
打包发布Python模块的方法详解
2016/09/18 Python
Django自定义manage命令实例代码
2018/02/11 Python
selenium3+python3环境搭建教程图解
2018/12/07 Python
Python实现分段线性插值
2018/12/17 Python
Python JSON格式数据的提取和保存的实现
2019/03/22 Python
Python SELENIUM上传文件或图片实现过程
2019/10/28 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
详解基于python的全局与局部序列比对的实现(DNA)
2020/10/07 Python
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
大学生个人简历自我评价
2013/11/16 职场文书
珍珠奶茶店创业计划书
2014/01/11 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
策划创业计划书
2014/02/06 职场文书
学历公证书范本
2014/04/09 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
个人向公司借款协议书
2014/10/09 职场文书
感谢信的格式
2015/01/21 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书