Heim  >  Artikel  >  Backend-Entwicklung  >  Selenium-Ausnahmebehandlung in Python

Selenium-Ausnahmebehandlung in Python

不言
不言Original
2018-05-04 15:49:232046Durchsuche

Dieser Artikel stellt hauptsächlich die Selenium-Ausnahmebehandlung in PHPPython vor, die einen gewissen Referenzwert hat. Jetzt können Freunde in Not darauf zurückgreifen.

Das ist bei der Ausführung automatisierter Tests unvermeidlich Tritt ein Fehler/eine Ausnahme auf, beispielsweise wenn das Testskript das entsprechende Element nicht findet, wird sofort eine NoSuchElementException geworfen. Haben Sie zu diesem Zeitpunkt keine Angst, mit dem Testskript oder der Testumgebung muss etwas nicht stimmen! Wie man damit umgeht, ist also der Schlüssel? Da normalerweise nur ein lokales Problem vorliegt, können wir try...exclus...raise verwenden, um die Ausnahme abzufangen, damit das Skript weiterhin ausgeführt werden kann. Nach dem Abfangen der Ausnahme kann die entsprechende Ausnahmeursache ausgedruckt werden, was die Analyse der Ausnahmeursache erleichtert.

Im Folgenden finden Sie ein Beispiel, bei dem die Informationen auf der Konsole ausgegeben und das aktuelle Browserfenster abgefangen werden. Dies dient als Grundlage für die bessere Lokalisierung von Fehlern Problem für den entsprechenden Entwickler. Der Code lautet wie folgt:

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)

Beim Ausführen gibt es eine Ausnahme und das Ergebnis ist wie folgt:

WebDriver wird im obigen Code verwendet. Die integrierte Methode zum Erfassen und Speichern des Bildschirms, z. B. die Methode save_screenshot (Dateiname) und die Methode save_screenshot_as_file (Dateiname), erfasst hier den Browser, wenn eine Testausnahme ausgelöst wird gleichzeitig auf den Bildschirm kopieren und im angegebenen Pfad mit einem benutzerdefinierten Bilddateinamen (oben) speichern (Code ist der aktuelle Pfad).

Ein weiteres Beispiel ist, wenn ein Element im DOM angezeigt wird, es aber unsichtbar ist und nicht mit ihm interagiert werden kann. Nehmen Sie als Beispiel die Anmeldung der Baidu-Homepage, wenn das Element kann nicht unsichtbar sein und eine ElementNotVisibleException-Ausnahme auslösen. Der Code lautet wie folgt:

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)

Beim Ausführen gibt es eine Ausnahme, das Ergebnis ist wie folgt:

Im Folgenden werden häufige Ausnahmen bei Selen aufgeführt:

Verwandte Empfehlungen:

Eine einfache Analyse der xlsxwriter-Bibliothek in Python

Detailliertes Verständnis der in Python integrierten for-Schleifen- und Range-Funktionen

Vertiefendes Verständnis des Zeitmoduls in Python

Das obige ist der detaillierte Inhalt vonSelenium-Ausnahmebehandlung in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn