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 이상 처리 내용은 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기