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抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python中支持向量机SVM的使用方法详解
Dec 26 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
Python 元类实例解析
Apr 04 Python
python 文本单词提取和词频统计的实例
Dec 22 Python
Python3 执行Linux Bash命令的方法
Jul 12 Python
wxPython之wx.DC绘制形状
Nov 19 Python
解决Pycharm的项目目录突然消失的问题
Jan 20 Python
使用python的pyplot绘制函数实例
Feb 13 Python
详细分析Python垃圾回收机制
Jul 01 Python
python中random模块详解
Mar 01 Python
Python matplotlib多个子图绘制整合
Apr 13 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执行sql语句的写法
2009/03/10 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
php查找字符串出现次数的方法
2014/12/01 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
PHP使用PhpSpreadsheet操作Excel实例详解
2020/03/26 PHP
再谈javascript图片预加载技术(详细演示)
2011/03/12 Javascript
基于JQuery的类似新浪微博展示信息效果的代码
2012/07/23 Javascript
Javascript连接多个数组不用concat来解决
2014/03/24 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
js实现的万能flv网页播放器代码
2016/04/30 Javascript
探讨Vue.js的组件和模板
2017/10/27 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
Angular实现的日程表功能【可添加及隐藏显示内容】
2017/12/27 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
解决removeEventListener 无法清除监听的问题
2020/10/30 Javascript
Python引用(import)文件夹下的py文件的方法
2014/08/26 Python
Django中的“惰性翻译”方法的相关使用
2015/07/27 Python
Python二分查找详解
2015/09/13 Python
python如何实现一个刷网页小程序
2018/11/27 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python groupby 函数 as_index详解
2019/12/16 Python
使用CSS3的box-sizing属性解决div宽高被内边距撑开的问题
2016/06/28 HTML / CSS
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
深入理解HTML5定时器requestAnimationFrame的使用
2018/12/12 HTML / CSS
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
世界上最大的字体市场:MyFonts
2020/01/10 全球购物
文明风采获奖感言
2014/02/18 职场文书
广告语设计及教案
2014/03/21 职场文书
爱国口号
2014/06/19 职场文书
2014年维修电工工作总结
2014/11/20 职场文书
小学见习报告
2015/06/23 职场文书
学术研讨会主持词
2015/07/04 职场文书
Nginx反向代理配置的全过程记录
2021/06/22 Servers
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技
SQL使用复合索引实现数据库查询的优化
2022/05/25 SQL Server