在使用selenium時(shí),不可避免的會(huì)遇到一些異常情況,比如超時(shí)、沒有找到節(jié)點(diǎn)的錯(cuò)誤等等。一旦出現(xiàn)這樣的錯(cuò)誤,程序就不能再運(yùn)行了。這里我們可以使用tryexcept語句來捕捉異常。
from selenium import webdriver from selenium.common.exceptions import TimeoutException, NoSuchElementException browser = webdriver.Chrome() try: browser.get('https://www.baidu.com') except TimeoutException: print('超時(shí)') try: browser.find_element_by_id('aa') except NoSuchElementException: print('未找到節(jié)點(diǎn)') finally: browser.close()
關(guān)于異常處理的實(shí)例擴(kuò)展:
我是Python的新手,我正在嘗試編寫一個(gè)使用硒登錄到Web應(yīng)用程序并打印一些信息的nagios腳本。到目前為止,該腳本可以按預(yù)期工作,但是如果它無法檢索該網(wǎng)站,我希望它向系統(tǒng)發(fā)出警報(bào)。這是我所擁有的
#!/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)
我希望如果第一部分失敗,那么它將轉(zhuǎn)到except部分,但是即使有出口,腳本也會(huì)打印出try和except。我確定這很簡(jiǎn)單,我很想念。
這就是我最終解決此問題的方式,感謝您的幫助
#!/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])引發(fā)SystemExit(status)異常,這就是執(zhí)行except子句的原因
通過提高SystemExit(status)退出解釋器。如果省略狀態(tài)或無,則默認(rèn)為零(即成功)。如果狀態(tài)為整數(shù),則將其用作系統(tǒng)退出狀態(tài)。如果是另一種對(duì)象,則將其打印出來,并且系統(tǒng)退出狀態(tài)將為1(即失?。?。
刪除sys.exit(0)內(nèi)部try
到此這篇關(guān)于Python Selenium異常處理的實(shí)例分析的文章就介紹到這了,更多相關(guān)Python Selenium異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
標(biāo)簽:合肥 阜新 昭通 興安盟 淘寶好評(píng)回訪 濟(jì)源 隨州 信陽
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Python Selenium異常處理的實(shí)例分析》,本文關(guān)鍵詞 Python,Selenium,異常,處理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。