Comment attendre jusqu'à ce qu'un élément n'existe plus dans Selenium
Je suis en train de tester une INTERFACE utilisateur dans laquelle l'utilisateur clique sur un bouton de suppression et d'une entrée de la table disparaît. En tant que tel, je veux être en mesure de vérifier que l'entrée de la table n'existe plus.
J'ai essayé d'utiliser ExpectedConditions.not()
pour inverser ExpectedConditions.presenceOfElementLocated()
en espérant que cela voudrait dire "s'attendre à ce que il n'y a pas une présence de l'élément spécifié". Mon code est comme suit:
browser.navigate().to("http://stackoverflow.com");
new WebDriverWait(browser, 1).until(
ExpectedConditions.not(
ExpectedConditions.presenceOfElementLocated(By.id("foo"))));
Cependant, j'ai trouvé que même en faisant ceci, j'obtiens un TimeoutExpcetion
causée par un NoSuchElementException
dire que l'élément "toto" n'existe pas. Bien sûr, n'ayant pas un tel élément est ce que je veux, mais je ne veux pas la levée d'une exception.
Alors, comment puis-je attendre jusqu'à ce qu'un élément n'existe plus? Je préfère un exemple qui ne dépend pas de l'interception d'une exception, si c'est possible (ce que je comprends, des exceptions doivent être levées exceptionnelles comportement).
source d'informationauteur Thunderforge
Vous devez vous connecter pour publier un commentaire.
Vous pouvez également utiliser -
Si vous allez par le biais de la source de celui-ci, vous pouvez voir que les deux
NoSuchElementException
etstaleElementReferenceException
sont traitées.La solution serait toujours compter sur la gestion des exceptions. Et c'est à peu près ok, même standard Conditions prévues s'appuyer sur l'exception levée par
findElement()
.L'idée est de créer un personnalisé Condition Attendue:
Pourquoi ne pas simplement de trouver la taille de
elements
. Nous savons que la collecte d'éléments taille serait 0 si élément n'existe pas.Comme findelement throws exception sur l'élément unaviability.j'ai donc mis en œuvre à l'aide de findelements. n'hésitez pas à les corriger et de les utiliser selon votre besoin.
J'ai trouvé une solution de contournement pour résoudre ce problème pour moi de manière efficace, utilisée à la suite de code C# pour gérer cela, vous pouvez convertir en Java