Selenium WebDriver - Si présence d'un élément, sélectionnez-il, si ce n'est de les ignorer et de continuer à l'élément suivant
Je suis en train de terminer un script de test et de l'accès à une assez dynamique de la page. La page en question, a un élément apparaissent (généralement un bouton radio ou une case à cocher), qui n'est présent que si certains critères dans les pages précédentes sont remplies. Donc, mon test sera l'accès à cette page sans pertinence des critères précédents et je veux clique sur "continuer" élément au bas de la page, tandis que la manipulation de ces éléments "SI" ils apparaissent. J'ai un peu de méthode sto cliquez sur les éléments d'identification, et ainsi le code suivant:
//Selects the "Confirm" button
IWebElement radioOption = mWebDriver.FindElement(By.Id("Radio_Button_Id"));
if (radioOption.Displayed)
{
this.ClickElementById("Radio_Button_Id");
//Clicks CONTINUE
this.ClickElementById("CONTINUE");
}
else
{
//Selects CONTINUE
this.ClickElementById("CONTINUE");
}
J'essaie dans ce code pour gérer que si le bouton s'affiche, sélectionnez-le, puis sélectionnez le bouton continuer. Aussi, si le bouton radio ne s'affiche pas, ignorez-la et cliquez sur le bouton continuer. Toute aide à ce serait bien apprécié.
Im nouveau à cela, que vous étiez à une scène. Pour le moment j'ai mis en place une "Aucun Élément" exception qui est retourné, lié à la "Radio_Button_Id". Ce drapeaux au début de l'extrait de code si l'élément n'est pas présent. Je m'attends à ce que le code de l'élément, si pas présent, alors l'ignorer et s'il est présent, alors l'attraper et de le sélectionner > ensuite, sélectionnez "Continuer".
vous êtes de la pensée dans la bonne direction... essayer de la mettre en œuvre 🙂
OriginalL'auteur user2464219 | 2013-09-10
Vous devez vous connecter pour publier un commentaire.
Essayer quelque chose comme cela:
Vous n'obtiendrez aucune exception, et puis le test peut continuer.
Je sais que c'est vieux mais j'ai juste couru à travers elle, et il y a quelques choses simples que vous pouvez faire pour réduire la quantité de code et de le rendre plus efficace, donc j'ai mis à jour la réponse. Il fonctionne toujours de la même façon.
OriginalL'auteur Tedesco
Vous avez dit que vous NoSuchElementExceptions.
radioOption.Displayed
des tests pour voir si l'élément est visible sur la page, mais il provoquera une erreur si l'élément n'existe même pas. (Un élément peut être présent, mais invisible)De test pour voir si un élément est présent, vous devez faire
mWebDriver.FindElements
(notez le S). Cela renvoie unList<WebElement>
de tous les éléments qui correspondent à votre sélection, et s'il ne peut trouver de tout, il sera de retour une liste de taille 0 (et ne pas jeter une erreur).De cette façon, si votre déclaration sera
if (radioOptions.size()!=0)
, et va vérifier pour voir si l'élément n'existe (pas si visible).OriginalL'auteur Nathan Merrill
J'ai également utilisé comme un moyen de tester si l'élément est présent et obtenir une poignée sur l'élément s'il est présent:
Cela permet pour un code comme:
Ou:
OriginalL'auteur Greg Burghardt