J'utilise selenium python et je cherche un moyen d'affirmer qu'un élément n'est pas présent, quelque chose comme :
assert not driver.find_element_by_xpath("locator").text== "Element Text"
J'utilise selenium python et je cherche un moyen d'affirmer qu'un élément n'est pas présent, quelque chose comme :
assert not driver.find_element_by_xpath("locator").text== "Element Text"
Vous pouvez l'utiliser ci-dessous :
assert not len(driver.find_elements_by_xpath("locator"))
L'assertion devrait être acceptée si aucun des éléments correspondant à votre locator
ont été trouvés ou AssertionError
si au moins 1 trouvé
Notez que si l'élément est généré dynamiquement par un certain JavaScript
il pourrait apparaître dans DOM
après est exécutée. Dans ce cas, vous pouvez implémenter Attente explicite :
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC
try:
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "locator")))
not_found = False
except:
not_found = True
assert not_found
Dans ce cas, nous obtiendrons AssertionError
si l'élément est apparu dans le DOM dans les 10 secondes
En supposant que vous utilisiez py.test pour votre vérification assert
et vous voulez vérifier le message d'une exception attendue :
import pytest
def test_foo():
with pytest.raises(Exception) as excinfo:
x = driver.find_element_by_xpath("locator").text
assert excinfo.value.message == 'Unable to locate element'
Si vous essayez de vérifier qu'un élément n'existe pas, le moyen le plus simple est d'utiliser une instruction with.
from selenium.common.exceptions import NoSuchElementException
def test_element_does_not_exist(self):
with self.assertRaises(NoSuchElementException):
browser.find_element_by_xpath("locator")
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.