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新手在作用域方面经常容易碰到的问题
Apr 03 Python
浅谈Python 的枚举 Enum
Jun 12 Python
在VS Code上搭建Python开发环境的方法
Apr 06 Python
Python 找到列表中满足某些条件的元素方法
Jun 26 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
Feb 21 Python
浅谈python标准库--functools.partial
Mar 13 Python
python SVM 线性分类模型的实现
Jul 19 Python
numpy.random.shuffle打乱顺序函数的实现
Sep 10 Python
python sqlite的Row对象操作示例
Sep 11 Python
python 类之间的参数传递方式
Dec 20 Python
Python pysnmp使用方法及代码实例
Aug 24 Python
详解Python中的进程和线程
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实现window平台的checkdnsrr函数
2015/05/27 PHP
总结对比php中的多种序列化
2016/08/28 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
ie下动态加态js文件的方法
2011/09/13 Javascript
基于jquery的用鼠标画出可移动的div
2012/09/06 Javascript
JS判断不能为空实例代码
2013/11/26 Javascript
jquery的ajax和getJson跨域获取json数据的实现方法
2014/02/04 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JavaScript实现的多种鼠标拖放效果
2015/11/03 Javascript
JavaScript截取指定长度字符串点击可以展开全部代码
2015/12/04 Javascript
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
函数四种调用模式以及其中的this指向
2017/01/16 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
webpack实现热更新(实施同步刷新)
2017/07/28 Javascript
React Native之ListView实现九宫格效果的示例
2017/08/02 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
Node.js折腾记一:读指定文件夹,输出该文件夹的文件树详解
2019/04/20 Javascript
浅谈layui分页控件field参数接收对象的问题
2019/09/20 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
python client使用http post 到server端的代码
2013/02/10 Python
python逐行读取文件内容的三种方法
2014/01/20 Python
使用Python的Bottle框架写一个简单的服务接口的示例
2015/08/25 Python
python自定义时钟类、定时任务类
2021/02/22 Python
python反转列表的三种方式解析
2019/11/08 Python
python定义类的简单用法
2020/07/24 Python
北美三大旅游网站之一:Travelocity
2017/08/12 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
五一劳动节活动记录
2014/03/23 职场文书
中学生操行评语
2014/04/24 职场文书
新闻编辑求职信
2014/07/13 职场文书
党员评议个人总结
2014/10/20 职场文书
趣味运动会加油词
2015/07/18 职场文书
《怀念母亲》教学反思
2016/02/19 职场文书
Python中第三方库Faker的使用详解
2022/04/02 Python