web-dev-qa-db-fra.com

Peut-on trouver un élément par ID dans appium

le lien suivant mentionne que nous pouvons trouver un élément en donnant id ... mais je ne peux pas le trouver.

https://github.com/appium/appium/blob/master/docs/en/writing-running-appium/finding-elements.md

rechercher par "nom" (c'est-à-dire, le texte, l'étiquette ou l'ID généré par le développeur, par exemple 'accessibilitéIdentifiant' d'un élément)

j'ai essayé le code suivant:

WebElement el = driver.findElement(By.name("txtLogin"));

où txtLogin est l'identifiant du bouton de connexion

il donne l'exception suivante:

org.openqa.Selenium.NoSuchElementException: An element could not be located on the page using the given search parameters. (WARNING: The server did not provide any stacktrace information)

peut plaire à quiconque d'expliquer quels sont les moyens de trouver des éléments dans appium

20
nilesh

Vous pouvez utiliser l'ID d'élément comme suit: -

nom du paquet : com.example.testap

ID d'élément: txtLogin

écrivez le code suivant -

 driver.findElement(By.id("com.example.testapp:id/txtLogin")).sendKeys("abc");
21
Mukul

Vous pouvez trouver par id en utilisant Xpath aussi, par exemple. enter image description here ici l'élément a class = "Android.widget.Button" et id = "digit5" pour que vous puissiez trouver comme

xpath("//Android.widget.Button[contains(@resource-id,'digit5')]")

Xpath est le plus utile lorsque vous souhaitez appliquer la condition Multiple comme xpath("//Android.widget.Button[contains(@resource-id,'digit5') and @text='5']") pour plus de détails, vous pouvez voir sur http://www.software-testing-tutorials-automation.com/2015/10/ui-automator-viewer-get-Android-app.html

4
Shreekant N

Voici le code jave avec les moyens les plus courants de localiser des éléments à l'aide d'Appium

//Find element by id and enter Hello in Text box.

    driver.findElementById("edit_name").sendKeys("Hello");
    //Find element by class name and enter Hello in Text box.

     driver.findElementByClassName("com.Android.EditText").sendKeys("Hello");
    //Find element by xpath and enter Hello in Text box.

    driver.findElementByXPath("//cass[@value='Enter Name']").sendKeys("Hello");
    //Find element by link text and enter Hello in Text box.

    driver.findElementByLinkText("Enter Name").sendKeys("Hello");

Si vous souhaitez en savoir plus sur la façon de trouver des éléments dans appium pour les vues natives et Web VISITEZ ICI

3
anuja jain

L'obtention d'élément par id n'est pas possible pour Android API level less than 18.Can you check in the uiautomatorviewer if the id is present. Sinon, vous pouvez obtenir tous les éléments du type EditView et itérer dessus pour trouver le champ correct pour envoyer du texte.

Utilisez-le de cette façon -

public List<WebElement> getWebElementList(By by) {

        return driver.findElements(by);
    }

public void details() throws InterruptedException{

        List<WebElement> weList = null;
        weList = getWebElementList(By.tagName("Android.widget.EditView"));
        for (WebElement we : weList) {
            if(we.getText().toLowerCase().contains("login")){
                we.sendkeys("Hello");
            }
        }           
    }

J'espère que cela t'aides.

1
user2220762

Vous pouvez trouver l'ID d'un élément en utilisant Android iautomatorviewer. Accédez simplement à votre dossier d'outils SDK D:\Android\android-sdk\tools, ici vous pouvez trouver uiautomatorviewer. Ouvrez-le et prenez des captures d'écran de votre activité et trouvez l'identifiant, la classe, le package de n'importe quel élément.

enter image description here

1
Poras Bhardwaj

Dans la version 1.0 d'Appium, findElementByTagName est obsolète.

Vous devez utiliser le findElementByClassName à la place avec le nom de classe qualifié. Code pour EditTextField et Button en Android comme ci-dessous:

findElements (By.className ("Android.widget.EditText"));

findElements (By.className ("Android.widget.Button"));

1
Rams_QA