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中threading模块join函数用法实例分析
Jun 04 Python
基python实现多线程网页爬虫
Sep 06 Python
Python 数据结构之堆栈实例代码
Jan 22 Python
Python爬虫之xlml解析库(全面了解)
Aug 08 Python
Python实现二维数组按照某行或列排序的方法【numpy lexsort】
Sep 22 Python
对tf.reduce_sum tensorflow维度上的操作详解
Jul 26 Python
python面向对象入门教程之从代码复用开始(一)
Dec 11 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
Python 继承,重写,super()调用父类方法操作示例
Sep 29 Python
Python基础详解之描述符
Apr 28 Python
Python进程池与进程锁之语法学习
Apr 11 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
php5.2.0内存管理改进
2007/01/22 PHP
提高PHP编程效率的方法
2013/11/07 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php函数与传递参数实例分析
2014/11/15 PHP
php通过session防url攻击方法
2014/12/10 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
PHP仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(上)
2017/05/26 PHP
JS input文本框禁用右键和复制粘贴功能的代码
2010/04/15 Javascript
javascript用函数实现对象的方法
2015/05/14 Javascript
jquery左右全屏大尺寸多图滑动效果代码分享
2015/08/28 Javascript
Javascript将数字转化成为货币格式字符串
2016/06/22 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
详解用webpack2搭建angular2的项目
2017/06/22 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
详解vue中的computed的this指向问题
2018/12/05 Javascript
微信小程序修改数组长度的问题的解决
2019/12/17 Javascript
vue项目创建步骤及路由router
2020/01/14 Javascript
利用python模拟实现POST请求提交图片的方法
2017/07/25 Python
python Crypto模块的安装与使用方法
2017/12/21 Python
python SQLAlchemy 中的Engine详解
2019/07/04 Python
Python编程中类与类的关系详解
2019/08/08 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
python 画图 图例自由定义方式
2020/04/17 Python
keras实现基于孪生网络的图片相似度计算方式
2020/06/11 Python
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
吉力贝官方网站:Jelly Belly
2019/03/11 全球购物
职业教育毕业生求职信
2013/11/09 职场文书
聚美优品广告词改编
2014/03/14 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
产品调价通知函
2015/04/20 职场文书
2016小学新学期寄语
2015/12/04 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书