-1
votes

Comment cliquer sur un élément si un autre ne peut pas être localisé

J'essaie d'exécuter les instructions suivantes:

i Rechercher un élément avec le code suivant xxx

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"

Comment faire cela?


2 commentaires

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?


3 Réponses :


1
votes

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()


2 commentaires

NomError: Nom 'NosuchelementExceptionException' n'est pas défini


Vous devrez importer cette exception du module de sélénium.



0
votes

Vous pouvez mettre votre code dans un essai / sauf Block comme John Gordon.
Ou vous pouvez utiliser Find_elements _ au lieu de Find_Element _ 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. xxx


2 commentaires

Impossible de localiser l'élément: {"Méthode": "xpath", "sélecteur": "// * [@ @ class = '. BTN-NEW.BTN-LARD'LIME"}


Dans XPath, vous ne devriez pas utiliser . 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') .



0
votes

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;
    }
}


0 commentaires