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 相关文章推荐
10个易被忽视但应掌握的Python基本用法
Apr 01 Python
在Python中处理时间之clock()方法的使用
May 22 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python遍历文件夹找出文件夹后缀为py的文件方法
Oct 21 Python
Django数据库连接丢失问题的解决方法
Dec 29 Python
python xpath获取页面注释的方法
Jan 14 Python
python实现银联支付和支付宝支付接入
May 07 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
Python倒排索引之查找包含某主题或单词的文件
Nov 13 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 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
Ext.data.PagingMemoryProxy分页一次性读取数据的实现代码
2010/04/07 PHP
DOM XPATH获取img src值的query
2013/09/23 PHP
异步加载技术实现当滚动条到最底部的瀑布流效果
2014/09/16 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
js 字符串操作函数
2009/07/25 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
阻止事件(取消浏览器对事件的默认行为并阻止其传播)
2013/11/03 Javascript
JS简单实现元素复制示例附图
2013/11/19 Javascript
js中Math之random,round,ceil,floor的用法总结
2013/12/26 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
JavaScript拆分字符串时产生空字符的解决方案
2014/09/26 Javascript
根据配置文件加载js依赖模块
2014/12/29 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
在nginx上部署vue项目(history模式)的方法
2017/12/28 Javascript
基于vue cli重构多页面脚手架过程详解
2018/01/23 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
node.js处理前端提交的GET请求
2019/08/30 Javascript
js+canvas实现刮刮奖功能
2020/09/13 Javascript
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
pycharm远程开发项目的实现步骤
2019/01/20 Python
python实现转圈打印矩阵
2019/03/02 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
python 实现在tkinter中动态显示label图片的方法
2019/06/13 Python
python实现差分隐私Laplace机制详解
2019/11/25 Python
如何用 Python 制作 GitHub 消息助手
2021/02/20 Python
关于探究python中sys.argv时遇到的问题详解
2021/02/23 Python
JINS眼镜官方网站:日本最大的眼镜邮购
2016/10/14 全球购物
英国领先的男装设计师服装购物网站:Mainline Menswear
2018/02/04 全球购物
幼儿教师工作感言
2014/02/14 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2015年团支部工作总结
2015/04/03 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
PHP实现创建以太坊钱包转账等功能
2021/04/21 PHP
HTML+css盒子模型案例(圆,半圆等)“border-radius” 简单易上手
2021/05/10 HTML / CSS
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis