>  기사  >  백엔드 개발  >  Python의 Selenium 예외 처리

Python의 Selenium 예외 처리

不言
不言원래의
2018-05-04 15:49:232046검색

이 글에서는 주로 PHPPython의 Selenium 예외 처리에 대해 소개합니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참고할 수 있습니다.

자동 테스트를 실행하는 동안 If와 같은 오류/예외가 필연적으로 발생합니다. 테스트 스크립트가 해당 요소를 찾지 못하면 즉시 NoSuchElementException 예외가 발생합니다. 지금은 두려워하지 마세요. 테스트 스크립트나 테스트 환경에 뭔가 문제가 있는 것 같습니다! 그럼 어떻게 대처하느냐가 관건이겠죠? 일반적으로 로컬 문제만 있기 때문에 스크립트가 계속 실행되도록 하려면 try...Exception...raise를 사용하여 예외를 잡을 수 있습니다. 예외를 포착한 후 해당 예외 원인을 인쇄할 수 있으므로 예외 원인 분석이 용이해집니다.

 다음은 예외가 발생하면 정보가 콘솔에 인쇄되고 현재 브라우저 창을 가로채서 후속 버그의 기초로 사용되어 문제를 더 잘 찾아냅니다. 해당 개발자. 코드는 다음과 같습니다.

import unittest
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException  #导入NoSuchElementException
class ExceptionTest(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.get("https://www.baidu.com")
  def test_exception(self):
    driver = self.driver
    try:
      search_text = driver.find_element_by_id("ss")
      self.assertEqual('百度一下', search_text.get_attribute("value"))
    except NoSuchElementException:
      file_name = "no_such_element.png"
      #driver.save_screenshot(file_name)
      driver.get_screenshot_as_file(file_name) 
      raise  #抛出异常,注释后则不抛出异常
  def tearDown(self):
    self.driver.quit()
if __name__ == '__main__':
  unittest.main(verbosity=2)

실행 시 예외가 발생하며 결과는 다음과 같습니다.

위 코드는 WebDriver에 내장된 화면 캡처 및 저장 방법을 사용합니다. save_screenshot(filename) 메소드와 save_screenshot_as_file(filename) here 메소드로 테스트 예외가 발생하면 브라우저 화면을 캡처하여 사용자 정의된 이미지 파일 이름으로 지정된 경로에 저장합니다(위 코드는 현재 경로입니다).

  또 다른 예는 요소가 DOM에 표시되지만 보이지 않고 상호 작용할 수 없는 경우, 예를 들어 Baidu 홈페이지에 로그인하면 요소가 보이지 않을 때 ElementNotVisibleException이 발생합니다. 예외가 발생하면 코드는 다음과 같습니다.

import unittest
from selenium import webdriver
from selenium.common.exceptions import ElementNotVisibleException  #导入ElementNotVisibleException
class ExceptionTest(unittest.TestCase):
  def setUp(self):
    self.driver = webdriver.Chrome()
    self.driver.get("https://www.baidu.com")
  def test_exception(self):
    driver = self.driver
    try:
      login = driver.find_element_by_name("tj_login")
      login.click()
    except ElementNotVisibleException:
      raise  
  def tearDown(self):
    self.driver.quit()
if __name__ == '__main__':
  unittest.main(verbosity=2)

작업 중 예외가 있으며 결과는 다음과 같습니다.

셀레늄의 일반적인 예외는 다음과 같습니다.

관련 권장 사항:

Python의 간단한 xlsxwriter 라이브러리 분석

Python의 for 루프 및 범위 내장 함수에 대한 심층적인 이해

Python의 시간 모듈에 대한 심층적인 이해

위 내용은 Python의 Selenium 예외 처리의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.