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
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");
Vous pouvez trouver par id en utilisant Xpath aussi, par exemple. 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
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
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.
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.
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"));