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의 초보자입니다. 셀렌을 사용하여 웹 응용 프로그램에 로그인하고 정보를 출력하는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)를 향상시켜 해석기를 종료합니다.상태를 생략하거나 없으면 기본값은 0 (성공) 입니다.상태가 정수인 경우 시스템 종료 상태로 사용됩니다.다른 객체의 경우 플롯되며 시스템 종료 상태는 1 (즉, 실패) 입니다.
sys를 삭제합니다.exit(0) 내부try
Python Selenium 이상 처리에 대한 실례 분석에 관한 이 글을 소개합니다. 더 많은 Python Selenium 이상 처리 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.