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異常處理內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: