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 datetime时间格式化去掉前导0
Jul 31 Python
Eclipse中Python开发环境搭建简单教程
Mar 23 Python
python实现八大排序算法(1)
Sep 14 Python
对python中Librosa的mfcc步骤详解
Jan 09 Python
详解Python二维数组与三维数组切片的方法
Jul 18 Python
Django工程的分层结构详解
Jul 18 Python
python编写猜数字小游戏
Oct 06 Python
利用Python绘制Jazz网络图的例子
Nov 21 Python
Jupyter notebook运行Spark+Scala教程
Apr 10 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
如何利用pygame实现打飞机小游戏
May 30 Python
python调用ffmpeg命令行工具便捷操作视频示例实现过程
Nov 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登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
2019/02/25 PHP
PHP7 foreach() 函数修改
2021/03/09 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
js如何实现设计模式中的模板方法
2013/07/23 Javascript
javascript常用的正则表达式实例
2014/05/15 Javascript
jQuery中:visible选择器用法实例
2014/12/30 Javascript
jQuery实现的兼容性浮动层示例
2016/08/02 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
Bootstrap基本组件学习笔记之分页(12)
2016/12/08 Javascript
jQuery zTree树插件简单使用教程
2017/01/10 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
Angular CLI 安装和使用教程
2017/09/13 Javascript
JavaScript实现职责链模式概述
2018/01/25 Javascript
JS实现字符串中去除指定子字符串方法分析
2018/05/17 Javascript
在移动端使用vue-router和keep-alive的方法示例
2018/12/02 Javascript
利用vue重构有赞商城的思路以及总结整理
2019/02/21 Javascript
详解JavaScript 新语法之Class 的私有属性与私有方法
2019/04/23 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
[39:02]DOTA2亚洲邀请赛 3.31 小组赛 B组 Mineski vs VGJ.T
2018/04/01 DOTA
python计算一个序列的平均值的方法
2015/07/11 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
Python程序运行原理图文解析
2018/02/10 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
如何使用Python发送HTML格式的邮件
2020/02/11 Python
Python enumerate() 函数如何实现索引功能
2020/06/29 Python
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
优秀团支部事迹材料
2014/02/08 职场文书
本科毕业生应聘求职信
2014/07/06 职场文书
初中同学会活动方案
2014/08/22 职场文书
2015年加油站工作总结
2015/05/13 职场文书
暑期工社会实践报告
2015/07/13 职场文书