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关键字and和or用法实例
May 28 Python
python登录并爬取淘宝信息代码示例
Dec 09 Python
终端命令查看TensorFlow版本号及路径的方法
Jun 13 Python
利用Python对文件夹下图片数据进行批量改名的代码实例
Feb 21 Python
Python玩转加密的技巧【推荐】
May 13 Python
selenium+python自动化测试环境搭建步骤
Jun 03 Python
python 提取文件指定列的方法示例
Aug 07 Python
使用Python求解带约束的最优化问题详解
Feb 11 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
Apr 29 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
May 13 Python
Python爬虫获取豆瓣电影并写入excel
Jul 31 Python
python统计mysql数据量变化并调用接口告警的示例代码
Sep 21 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 实现的将图片转换为TXT
2015/10/21 PHP
js调用flash的效果代码
2008/04/26 Javascript
这些年、我收集的JQuery代码小结
2012/08/01 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
js控制input框只读实现示例
2014/01/20 Javascript
Javascript 绘制 sin 曲线过程附图
2014/08/21 Javascript
jQuery中extend函数的实现原理详解
2015/02/03 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
js解决movebox移动问题
2016/03/29 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
ES6新增数据结构WeakSet的用法详解
2017/08/07 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
使用D3.js构建实时图形的示例代码
2018/08/28 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
vue组件之间通信方式实例总结【8种方式】
2019/02/22 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
详解JavaScript执行模型
2020/11/16 Javascript
[02:10]DOTA2亚洲邀请赛 EG战队出场宣传片
2015/02/07 DOTA
Python中的defaultdict模块和namedtuple模块的简单入门指南
2015/04/01 Python
python实现将内容分行输出
2015/11/05 Python
Python正则表达式使用范例分享
2016/12/04 Python
PyQt QCombobox设置行高的方法
2019/06/20 Python
Python *args和**kwargs用法实例解析
2020/03/02 Python
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
什么是TCP/IP
2014/07/27 面试题
群众路线自我剖析材料
2014/10/08 职场文书
个人债务授权委托书
2014/10/17 职场文书
2014年信息技术工作总结
2014/12/16 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书
2019年中学生的思想品德评语集锦
2019/12/19 职场文书
Maven学习----Maven安装与环境变量配置教程
2021/06/29 Java/Android
Java Socket实现多人聊天系统
2021/07/15 Java/Android