J'essaie d'exécuter les instructions suivantes:
i Rechercher un élément avec le code suivant P> mais je veux que si cet élément ne soit pas trouvé ( Renvoie l'erreur 'Impossible de localiser l'élément') Le script doit cliquer sur l'élément avec une autre classe, par exemple "BTN-NOUVEAU BTN-Large" P> Comment faire cela? P> P>
3 Réponses :
envelopper votre code dans un blocage / sauf bloc.
try:
ipokay = driver.find_element_by_xpath("//input[@type='checkbox']").click()
except NoSuchElementException:
ipokay = driver.find_element_by_some_other_way("something").click()
NomError: Nom 'NosuchelementExceptionException' n'est pas défini
Vous devrez importer cette exception du module de sélénium.
Vous pouvez mettre votre code dans un essai / sauf Block comme John Gordon.
Ou vous pouvez utiliser Find_elements _ code> au lieu de Find_Element _ code> et vérifiez la taille de la liste. De cette façon, vous pouvez éviter de manipuler l'exception et il est plus rapide que d'attendre l'exception.
Impossible de localiser l'élément: {"Méthode": "xpath", "sélecteur": "// * [@ @ class = '. BTN-NEW.BTN-LARD'LIME"}
Dans XPath, vous ne devriez pas utiliser . Code> comme sélecteur CSS et utilisez la valeur de la classe complète affichée dans l'outil DEV. Vous pouvez modifier le sélecteur en sélecteur CSS et utiliser pilote.find_element_by_css_selector ('. BTN-NEW.BTN-WART') code>.
Utilisez le code ci-dessous pour cliquer sur Elément avec plusieurs options d'emplacement d'élément. Vous pouvez envoyer un nombre quelconque de localisateurs d'éléments différents. Cela va essayer un à un.
EG: cliquez sur (by.xpath ("chemin"), by.Id ("ID"), by.name ("Nom)); p>
public static void click(By... by){
int count=by.length;
for(By locator:by){
if(isElementPresent(locator)) {
getDriver().findElement(locator).click();
break;
}
count--;
}
if(count<0)
assertTrue(false,"Count not find element.");
}
public static boolean isElementPresent(By selector)
{
try {
driver.findElement(selector);
return true;
}
catch (Exception e) {
return false;
}
}
Publiez le HTML des balises principales et alternatives que vous souhaitez rechercher.
Bienvenue à cela. Est-ce le même bouton avec 2 noms de classe différents ou souhaitez-vous cliquer sur le bouton B si le bouton A n'existe pas?