Maison  >  Article  >  développement back-end  >  Gestion des exceptions Selenium en Python

Gestion des exceptions Selenium en Python

不言
不言original
2018-05-04 15:49:232004parcourir

Cet article présente principalement la gestion des exceptions Selenium dans PHPPython, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Lors de l'exécution de tests automatisés, il est inévitable. il y aura Si une erreur/exception se produit, par exemple, si le script de test ne trouve pas l'élément correspondant, une NoSuchElementException sera immédiatement levée. N'ayez pas peur pour le moment, il doit y avoir un problème avec le script de test ou l'environnement de test ! Alors, comment y faire face est la clé ? Comme il n'y a généralement qu'un problème local, afin de permettre au script de continuer à s'exécuter, nous pouvons utiliser try...sauf...raise pour intercepter l'exception. Après avoir détecté l'exception, la cause de l'exception correspondante peut être imprimée, ce qui facilite l'analyse de la cause de l'exception.

Ce qui suit donnera un exemple. Lorsqu'une exception est levée, les informations seront imprimées sur la console et la fenêtre actuelle du navigateur sera interceptée. Cela servira de base aux bugs ultérieurs pour mieux localiser le. problème pour le développeur correspondant. Le code est le suivant :

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)

Il y a une exception lors de l'exécution, et le résultat est le suivant :

Utilisé dans le code ci-dessus Accédez à la méthode intégrée de WebDriver pour capturer l'écran et l'enregistrer, comme la méthode save_screenshot(filename) et la méthode save_screenshot_as_file(filename) ici. Lorsque l'exception de test est levée, l'exception de test est levée. L'écran du navigateur sera capturé en même temps et enregistré dans le chemin spécifié avec un nom de fichier image personnalisé (le code ci-dessus est le chemin actuel).

Un autre exemple est lorsqu'un élément est présenté dans le DOM, mais qu'il est invisible et ne peut pas interagir avec, une exception sera levée. Prenons l'exemple de la connexion à la page d'accueil de Baidu, lorsque l'élément. ne peut pas être invisible, en lançant une exception ElementNotVisibleException, le code est le suivant :

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)

Il y a une exception lors de l'exécution, le résultat est le suivant :

Les exceptions courantes dans le sélénium sont répertoriées ci-dessous :

Recommandations associées :

Une analyse simple de la bibliothèque xlsxwriter en python

Compréhension approfondie des fonctions intégrées de boucle for et range en python

Compréhension approfondie du module time en python

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn