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 30 Python
python3+PyQt5重新实现QT事件处理程序
Apr 19 Python
python 日期操作类代码
May 05 Python
Python文本统计功能之西游记用字统计操作示例
May 07 Python
python实现两张图片的像素融合
Feb 23 Python
Python装饰器限制函数运行时间超时则退出执行
Apr 09 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
Python Flask框架扩展操作示例
May 03 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
Python箱型图绘制与特征值获取过程解析
Oct 22 Python
python简单实现最大似然估计&amp;scipy库的使用详解
Apr 15 Python
利用python控制Autocad:pyautocad方式
Jun 01 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 base64编码后解码乱码的解决办法
2014/06/19 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
phpStudy配置多站点多域名和多端口的方法
2017/09/01 PHP
DWZ刷新dialog解决方法
2013/03/03 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
jquery中map函数与each函数的区别实例介绍
2014/06/23 Javascript
Jquery响应回车键直接提交表单操作代码
2014/07/25 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
JS中的数组方法笔记整理
2016/07/26 Javascript
ES6学习之变量的解构赋值
2017/02/12 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
利用Javascript开发一个二维周视图日历
2017/12/14 Javascript
JS+WCF实现进度条实时监测数据加载量的方法详解
2017/12/19 Javascript
微信小程序+腾讯地图开发实现路径规划绘制
2019/05/22 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
详解设计模式中的工厂方法模式在Python程序中的运用
2016/03/02 Python
Python编程实现及时获取新邮件的方法示例
2017/08/10 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python中的并发处理之asyncio包使用的详解
2018/04/03 Python
图文详解python安装Scrapy框架步骤
2019/05/20 Python
python进度条显示之tqmd模块
2020/08/22 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
UGG澳洲官网:UGG Australia
2018/04/26 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
洗手间标语
2014/06/23 职场文书
机电系毕业生求职信
2014/07/11 职场文书
公务员个人总结
2015/02/12 职场文书
付款证明格式范文
2015/06/19 职场文书
学校教师培训工作总结
2015/10/14 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript