Python Selenium异常处理的实例分析

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异常处理内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python 中的Selenium异常处理实例代码

    自动化测试执行过程中,难免会有错误/异常出现,比如测试脚本没有发现对应元素,则会立刻抛出NoSuchElementException异常.这时不要怕,肯定是测试脚本或者测试环境哪里出错了!那如何处理才是关键?因为一般只是局部有问题,为了让脚本继续执行,so我们可以用try...except...raise捕获异常.该捕获异常后可以打印出相应的异常原因,这样以便于分析异常原因. 下面将举例说明,当异常抛出后将信息打印在控制台,同时截取当前浏览器窗口,作为后续bug的依据给相应开发人员更好下定位问题

  • Python Selenium异常处理的实例分析

    1.说明 在使用selenium时,不可避免的会遇到一些异常情况,比如超时.没有找到节点的错误等等.一旦出现这样的错误,程序就不能再运行了.这里我们可以使用tryexcept语句来捕捉异常. 2.实例 from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException browser = webdriver.Chrome() try: brow

  • Python iter()函数用法实例分析

    本文实例讲述了Python iter()函数用法.分享给大家供大家参考,具体如下: python中的迭代器用起来非常灵巧,不仅可以迭代序列,也可以迭代表现出序列行为的对象,例如字典的键.一个文件的行,等等. 迭代器就是有一个next()方法的对象,而不是通过索引来计数.当使用一个循环机制需要下一个项时,调用迭代器的next()方法,迭代完后引发一个StopIteration异常. 但是迭代器只能向后移动.不能回到开始.再次迭代只能创建另一个新的迭代对象. 反序迭代工具:reversed()将返回

  • Python callable()函数用法实例分析

    本文实例讲述了Python callable()函数用法.分享给大家供大家参考,具体如下: python中的内建函数callable( ) ,可以检查一个对象是否是可调用的 . 对于函数, 方法, lambda 函数式, 类, 以及实现了 _ _call_ _ 方法的类实例, 它都返回 True. >>> help(callable) Help on built-in function callable in module __builtin__: callable(...) calla

  • 利用python调用摄像头的实例分析

    这篇文章主要介绍了python调用摄像头的示例代码,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下 一.打开摄像头 import cv2 import numpy as np def video_demo(): capture = cv2.VideoCapture(0)#0为电脑内置摄像头 while(True): ret, frame = capture.read()#摄像头读取,ret为是否成功打开摄像头,true,false. frame为视频的每一帧图像 frame = c

  • python关键字传递参数实例分析

    1.说明 关键词传递以"形参变量名=实参"的形式参与实参关联,根据形参的名称进行参数传递,使实参和形参的顺序不一致.不用担心定义函数时参数的顺序,直接在传参时指定相应的名称即可. 2.两种形式 makeup_url(protocal='http', address='www.baidu.com') makeup_url(address='www.baidu.com',protocal='http') 3.实例 def makeup_url(protocal, address): pri

  • Python数据标准化的实例分析

    说明 1.将原始数据转换为均值为0,标准差在1范围内. 2.对标准化而言:如果出现异常点,由于有一定数据量,少量异常点对平均值的影响不大,因此方差变化不大. 实例 def stand_demo(): """ 标准化 :return: """ # 1. 获取数据 data = pd.read_csv('dating.txt') data = data.iloc[:, :3] print('data:\n', data) # 2.实例化一个转换器类

  • Python自定义进程池实例分析【生产者、消费者模型问题】

    本文实例分析了Python自定义进程池.分享给大家供大家参考,具体如下: 代码说明一切: #encoding=utf-8 #author: walker #date: 2014-05-21 #function: 自定义进程池遍历目录下文件 from multiprocessing import Process, Queue, Lock import time, os #消费者 class Consumer(Process): def __init__(self, queue, ioLock):

  • Python兔子毒药问题实例分析

    本文实例分析了Python兔子毒药问题.分享给大家供大家参考.具体分析如下: 问题大致是这样的:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子.现在有10只兔子,当兔子喝下毒药两个小时后死去,请设计一种方案,能够在24小时内找到这瓶毒药. ................2分钟后 前面的问题你一定想清楚了,那么略改动一下:1000瓶无色无味的液体,其中一瓶为毒药,其它皆为清水,毒药只取一滴与清水混合为一瓶也可以毒死兔子.现在有10只兔子,当兔子

  • Python内置模块logging用法实例分析

    本文实例讲述了Python内置模块logging用法.分享给大家供大家参考,具体如下: 1.将日志直接输出到屏幕 import logging logging.debug('This is debug message') logging.info('This is info message') logging.warning('This is warning message') # 默认情况下,logging将日志打印到屏幕,日志级别为WARNING: #output==============

  • Python反射的用法实例分析

    本文实例讲述了Python反射的用法.分享给大家供大家参考,具体如下: 在做程序开发中,我们常常会遇到这样的需求:需要执行对象里的某个方法,或需要调用对象中的某个变量,但是由于种种原因我们无法确定这个方法或变量是否存在,这是我们需要用一个特殊的方法或机制要访问和操作这个未知的方法或变量,这中机制就称之为反射.接下记录下反射几个重要方法: hasattr 判断对象中是否有这个方法或变量 class Person(object): def __init__(self,name): self.name

随机推荐