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 相关文章推荐
Django中几种重定向方法
Apr 28 Python
Python将DataFrame的某一列作为index的方法
Apr 08 Python
Python实现字典(dict)的迭代操作示例
Jun 05 Python
深入浅析Python传值与传址
Jul 10 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
Dec 29 Python
代码详解django中数据库设置
Jan 28 Python
python使用thrift教程的方法示例
Mar 21 Python
django settings.py 配置文件及介绍
Jul 15 Python
快速解决vue.js 模板和jinja 模板冲突的问题
Jul 26 Python
Python利用命名空间解析XML文档
Aug 10 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
Python django中如何使用restful框架
Jun 23 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自动更新新闻DIY
2006/10/09 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
通过 Dom 方法提高 innerHTML 性能
2008/03/26 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
jquery ajax,ashx,json的用法总结
2014/02/12 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
原生JavaScript实现异步多文件上传
2015/12/02 Javascript
基于jquery实现鼠标左右拖动滑块滑动附源码下载
2015/12/23 Javascript
详解JavaScript对象类型
2016/06/16 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
使用Bootstrap Tabs选项卡Ajax加载数据实现
2016/12/23 Javascript
微信小程序实现图片预加载组件
2017/01/18 Javascript
详谈表单重复提交的三种情况及解决方法
2017/08/16 Javascript
微信小程序仿朋友圈发布动态功能
2018/07/15 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
JS/jQuery实现获取时间的方法及常用类完整示例
2019/03/07 jQuery
vue中使用 pako.js 解密 gzip加密字符串的方法
2019/06/10 Javascript
Vue使用自定义指令实现拖拽行为实例分析
2020/06/06 Javascript
解决elementui表格操作列自适应列宽
2020/12/28 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[46:28]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python算法演练_One Rule 算法(详解)
2017/05/17 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
python 并发编程 阻塞IO模型原理解析
2019/08/20 Python
Python全局锁中如何合理运用多线程(多进程)
2019/11/06 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
荷兰网上药店:Drogisterij.net
2019/09/03 全球购物
Hobbs官方网站:英国奢华女性时尚服装
2020/02/22 全球购物
2014年小班元旦活动方案
2014/02/16 职场文书
社区食品安全实施方案
2014/03/28 职场文书
商场消防安全责任书
2014/07/29 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
Python机器学习算法之决策树算法的实现与优缺点
2021/05/13 Python
浅谈哪个Python库才最适合做数据可视化
2021/06/28 Python
Java8中Stream的一些神操作
2021/11/02 Java/Android