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字符串、元组、列表、字典互相转换的方法
Jan 23 Python
python中numpy基础学习及进行数组和矢量计算
Feb 12 Python
使用python 爬虫抓站的一些技巧总结
Jan 10 Python
python中协程实现TCP连接的实例分析
Oct 14 Python
使用python获取电脑的磁盘信息方法
Nov 01 Python
Python后台开发Django会话控制的实现
Apr 15 Python
在django中图片上传的格式校验及大小方法
Jul 28 Python
Python+Pyqt实现简单GUI电子时钟
Feb 22 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
Python selenium文件上传下载功能代码实例
Apr 13 Python
Python max函数中key的用法及原理解析
Jun 26 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
风格模板初级不完全修改教程
2006/10/09 PHP
自动生成文章摘要的代码[PHP 版本]
2007/03/20 PHP
php笔记之:文章中图片处理的使用
2013/04/26 PHP
PHP简单读取PDF页数的实现方法
2016/07/21 PHP
jquery的ajax从纯真网(cz88.net)获取IP地址对应地区名
2009/12/02 Javascript
浅谈javascript 函数表达式和函数声明的区别
2016/01/05 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
基于javascript实现按圆形排列DIV元素(二)
2016/12/02 Javascript
详解angular中如何监控dom渲染完毕
2017/01/03 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
jQuery中将json数据显示到页面表格的方法
2018/05/27 jQuery
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
JS函数内部属性之arguments和this实例解析
2018/10/07 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
Python随机生成数模块random使用实例
2015/04/13 Python
Python遍历目录的4种方法实例介绍
2015/04/13 Python
利用Python自动监控网站并发送邮件告警的方法
2016/08/24 Python
python实现单链表中删除倒数第K个节点的方法
2018/09/28 Python
pandas之分组groupby()的使用整理与总结
2020/06/18 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
CSS3支持IE6, 7, and 8的边框border属性
2012/12/28 HTML / CSS
CSS3的first-child选择器实战攻略
2016/04/28 HTML / CSS
HTML5中使用postMessage实现Ajax跨域请求的方法
2016/04/19 HTML / CSS
具有防紫外线功能的高性能钓鱼服装:Hook&Tackle
2018/08/16 全球购物
办公室文秘自我评价
2013/09/21 职场文书
自考生毕业自我鉴定
2013/10/10 职场文书
部队学习十八大感言
2014/01/11 职场文书
电子邮箱格式怎么写
2014/01/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
钱学森观后感
2015/06/04 职场文书
新娘父亲婚礼致辞
2015/07/27 职场文书
手把手教你怎么用Python实现zip文件密码的破解
2021/05/27 Python