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!
推薦閱讀:
- 詳解Python 使用 selenium 進行自動化測試或者協助日常工作
- Python爬蟲之Selenium庫的使用方法
- Python實現12306自動搶火車票功能
- selenium動態數據獲取的方法實現
- python+selenium小米商城紅米K40手機自動搶購的示例代碼