【问题标题】:Python exception handling with selenium使用 selenium 处理 Python 异常
【发布时间】:2015-12-11 21:36:38
【问题描述】:

我是 Python 新手,我正在尝试编写一个 nagios 脚本,该脚本使用 selenium 登录到 webapp 并打印出一些信息。截至目前,该脚本按预期工作,但我希望它在无法检索网站时提醒系统。这是我所拥有的

#!/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)

【问题讨论】:

    标签: python selenium nagios


    【解决方案1】:

    sys.exit([status]) 引发 SystemExit(status) 异常,这就是执行 except 子句的原因

    通过引发 SystemExit(status) 退出解释器。如果状态是 省略或无,默认为零(即成功)。如果状态是 一个整数,它将被用作系统退出状态。如果是 另一种对象,它将被打印和系统退出状态 将是一个(即失败)。

    删除sys.exit(0)内的try
    (如果你展示了脚本的完整版本)

    【讨论】:

      猜你喜欢
      • 2020-04-25
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      • 2018-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多