Python Selenium异常处理的实例分析

作者:小妮浅浅 时间:2021-01-12 17:13:06 

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

来源:https://www.py.cn/jishu/jichu/27133.html

标签:Python,Selenium,异常处理
0
投稿

猜你喜欢

  • .NET 2.0 的压缩功能代码

    2023-07-14 05:25:22
  • OpenCV图像分割之分水岭算法与图像金字塔算法详解

    2022-11-27 07:59:24
  • 在python2.7中用numpy.reshape 对图像进行切割的方法

    2021-12-23 19:11:02
  • pandas 小数位数 精度的处理方法

    2022-12-16 20:40:05
  • python中单双下划线的区别对比分析

    2023-12-18 23:58:45
  • Python编程itertools模块处理可迭代集合相关函数

    2023-05-31 02:18:07
  • 设计稿标注首屏线的确定始末

    2011-03-30 12:36:00
  • python一行输入多值的实现详解

    2021-07-02 06:52:39
  • 利用scrapy将爬到的数据保存到mysql(防止重复)

    2024-01-23 15:35:28
  • python实战教程之自动扫雷

    2022-08-16 01:05:48
  • python中list.copy方法用法详解

    2023-09-16 11:48:30
  • Python THREADING模块中的JOIN()方法深入理解

    2021-10-16 16:54:01
  • SSM框架把日志信息保存到数据库过程详解

    2024-01-19 12:56:27
  • Python控制windows系统音量实现实例

    2022-07-29 12:09:46
  • Python 如何实现变量交换

    2021-07-03 12:48:20
  • 利用Javascript实现一套自定义事件机制

    2024-05-03 15:59:07
  • 使用Python遍历文件夹实现查找指定文件夹

    2021-01-19 09:23:06
  • SQL Server中的逻辑函数介绍

    2024-01-20 06:20:37
  • Python cookbook(数据结构与算法)让字典保持有序的方法

    2022-04-28 03:28:04
  • PyCharm使用Docker镜像搭建Python开发环境

    2021-09-24 21:41:16
  • asp之家 网络编程 m.aspxhome.com