Element not found exception using id or xpath attribute with @AndroidFindBy
Les mainteneurs répondent en général sous 5 jours
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 25/100
- Type d'issue
- Bug
- Clarté
- À clarifier
- Activité
- À l'abandon
- Domaine
- mobile-dev, testing-qa
Piste de recherche
Commencez par examiner les déclarations des localisateurs et le flux d’initialisation dans BasePage.java et LoginPage.java, puis comparez les journaux Appium Android et XPath avec la capture d’écran de l’inspecteur. Vérifiez si l’échec se situe dans le chemin de recherche du client Java ou dans les attributs d’élément signalés par l’application ; la tâche est terminée lorsqu’une cause reproductible a été identifiée et que la correction requise a été documentée.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
I am writing a simple login test for my Android app using the Appium-java client.
I am also using Page Object Model and Page Factory class to initialize elements in my test.
The test is failing as it cannot locate the email address input field.
I tried to locate the email field using both id and xpath attribute with @AndroidFindBy field decorator but it [didn't] work.
Looking for help on this issue.
Environment
- Java client build version: 8.5.1
- Appium server version or git revision if you use some snapshot: Appium v2.0.0-rc.5
- Device: Android emulator
Code To Reproduce Issue [ Good To Have ]
BasePage.java:
public class BasePage {
AppiumDriver driver;
public static final long WAIT = 30;
public BasePage(AppiumDriver appiumDriver) {
PageFactory.initElements(new AppiumFieldDecorator(appiumDriver), this);
driver = appiumDriver;
}
public void click(WebElement element) {
waitForVisibility(element);
element.click();
}
public void enterText(WebElement element, String text) throws InterruptedException {
Thread.sleep(20000);
element.sendKeys(text);
}
}
LoginPage.java
public class LoginPage extends BasePage {
public LoginPage(AppiumDriver appiumDriver) {
super(appiumDriver);
}
@AndroidFindBy(id = "loginId")
WebElement emailAddressInput;
@AndroidFindBy(id = "button-username")
@iOSXCUITFindBy(id = "button-username")
WebElement continueButton;
@FindBy(id = "password")
@iOSXCUITFindBy(id = "password")
WebElement passwordInput;
@AndroidFindBy(id = "button-password")
@iOSXCUITFindBy(id = "button-password")
WebElement signInButton;
public void enterEmailAddressAndProceed(String email) throws InterruptedException {
enterText(emailAddressInput, email);
enterText(passwordInput, "password");
//click(continueButton);
}
}
BaseTest.java
public class BaseTest {
public static AppiumDriver driver;
public static void androidSetUp() throws MalformedURLException {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("appium:automationName", "UiAutomator2");
capabilities.setCapability("appium:platformVersion", "14");
capabilities.setCapability("appium:deviceName", "Android Emulator");
capabilities.setCapability("adbExecTimeout", 900000);
capabilities.setCapability("uiautomator2ServerLaunchTimeout", 50000);
capabilities.setCapability("appium:appWaitActivity", "com.vimcar.nextlogbook.feature.useronboarding.authentication.presentation.LoginActivity");
capabilities.setCapability("appium:newCommandTimeout", 120);
capabilities.setCapability("appium:app", System.getProperty("user.dir")+"/src/test/resources/next-logbook-debug.apk");
driver = new AndroidDriver(new URL("http://localhost:4723/wd/hub"), capabilities);
}
public static void tearDown() {
if(null != driver) {
driver.quit();
}
}
}
LoginTest.java
public class LoginTest extends BaseTest {
LoginPage loginPage;
@Test
public void existingUserLoginTest() throws Exception {
androidSetUp();
loginPage = new LoginPage(driver);
loginPage.enterEmailAddressAndProceed("[email protected]");
tearDown();
}
}
Exception Stacktraces
[AndroidUiautomator2Driver@fdfb (4d103231)] Got response with status 404: {"sessionId":"14ea4cc4-5028-468c-9007-59f3acc79c4a","value":{"error":"no such element","message":"An element could not be located on the page using the given search parameters","stacktrace":"io.appium.uiautomator2.common.exceptions.ElementNotFoundException: An element could not be located on the page using the given search parameters\n\tat io.appium.uiautomator2.handler.FindElement.safeHandle(FindElement.java:63)\n\tat io.appium.uiautomator2.handler.request.SafeRequestHandler.handle(SafeRequestHandler.java:59)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleRequest(AppiumServlet.java:277)\n\tat io.appium.uiautomator2.server.AppiumServlet.handleHttpRequest(AppiumServlet.java:271)\n\tat io.appium.uiautomator2.http.ServerHandler.channelRead(ServerHandler.java:68)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:366)\n\tat io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:352)\n\tat io.netty.chann...
[debug] [W3C] Matched W3C error code 'no such element' to NoSuchElementError
[debug] [AndroidUiautomator2Driver@fdfb (4d103231)] Encountered internal error running command: NoSuchElementError: An element could not be located on the page using the given search parameters.
Link To Appium Logs
Appium logs when searching by id:
https://gist.github.com/p-saxena/3aaead9344a9acf220f1868f47527960
Appium logs when searching by XPath:
https://gist.github.com/p-saxena/9daed82487152f6e203c7a1e6aec25c3
Appium inspector screenshot:
- Langage dominant
- Java
- Étoiles
- 1.3k
- Forks
- 755
- Merge moyen
- 5 j 14 h
- PR mergées (30 j)
- 8
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de appium/java-client
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 25/100
appium/java-client#2426 ·
Les mainteneurs répondent en général sous 5 jours
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 50/100
appium/java-client#2372 ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 30/100
appium/java-client#2368 ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 30/100
appium/java-client#2341 · 1 commentaire ·
Les mainteneurs répondent en général sous 5 jours
-
Difficulté 5/5 Plus d'une semaine Accessibilité débutants 15/100
appium/java-client#2323 ·
Les mainteneurs répondent en général sous 5 jours
Toutes les issues de appium/java-client
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
redhat-developer/intellij-quarkus#1626 ·
-
Type/Bug
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
wso2/product-integrator-mi#5061 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
quarkiverse/quarkus-roq#1277 ·
Les mainteneurs répondent en général sous 1 jour
-
Typos in page footerOuverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
apache/logging-site#48 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
apache/maven-surefire#3496 · 3 commentaires ·
Les mainteneurs répondent en général sous 1 jour