Aller au contenu

Tâche Wait For Element

Résumé

  • Nom interne : WaitForElement
  • Catégorie : Android UI
  • Objectif : Sonder l'écran jusqu'à ce qu'un élément correspondant à un sélecteur apparaisse, ou expiration du délai.
  • Type de tâche : Normal

Compatibilité

  • Version AndroMate minimale : 1.1.0
  • Version AndroMate maximale : 1.1.0
  • Android minimum : Android 13 (API 33)
  • Android testé maximum : Android 16 (API 36)
  • Fabricants supportés :

    • Samsung (One UI 6.x / 7.x / 8.x)
    • Autres fabricants - pas encore supportés (Xiaomi HyperOS et Google Pixel en cours d'adaptation)
    • Permissions requises :
    • ACCESSIBILITY_SERVICE

Description détaillée

La tâche Wait For Element vérifie de manière répétée l'arbre d'accessibilité (toutes les 300ms) à la recherche d'un élément correspondant à un sélecteur, jusqu'à le trouver ou expiration de WaitForElement_timeout_ms. Elle ne clique pas et n'agit pas autrement sur l'élément trouvé - enchaînez avec une tâche Click In Element ou Fill Text ensuite si besoin.

Comme pour Fill Text, la recherche n'est pas limitée aux nœuds cliquables - elle peut attendre la disparition d'un indicateur de chargement, l'apparition d'un label, ou n'importe quel nœud, pas seulement ceux qui sont tapables.


Paramètres d'entrée

Paramètre Type Requis Valeurs possibles Compatibilité Android Compatibilité AndroMate Défaut
WaitForElement_textSelector Enum / String (résolvable) Oui text, contentDescription, tooltipText, resourceId, className, hintText, anyOf Android 13 (API 33) -> Android 16 (API 36) 1.1.0 -> 1.1.0 ""
WaitForElement_CompareType Enum / String (résolvable) Oui exactText, startWith, contain Android 13 (API 33) -> Android 16 (API 36) 1.1.0 -> 1.1.0 ""
WaitForElement_Index Entier (résolvable) Non Index base 0 parmi les correspondances Android 13 (API 33) -> Android 16 (API 36) 1.1.0 -> 1.1.0 0
WaitForElement_matchText String (résolvable) Oui La valeur à faire correspondre Android 13 (API 33) -> Android 16 (API 36) 1.1.0 -> 1.1.0 ""
WaitForElement_timeout_ms Entier (résolvable) Non ≥ 0 millisecondes Android 13 (API 33) -> Android 16 (API 36) 1.1.0 -> 1.1.0 5000

Paramètres de sortie

Cette tâche ne produit aucune variable de sortie. Elle retourne un VoidResult en cas de succès.


Exceptions

Code Nom de l'exception Description
SCREEN-AUTOMATOR-ERROR-006 Unsupported Text Selector WaitForElement_textSelector n'est pas une valeur de sélecteur reconnue.
SCREEN-AUTOMATOR-ERROR-010 Screen Automator Service Not Connected Le service d'accessibilité AndroMate n'est pas activé/connecté.
SCREEN-AUTOMATOR-ERROR-011 Screen Automator Action Failed Aucun élément correspondant n'est apparu avant expiration de WaitForElement_timeout_ms - inclut le sélecteur/compare/index/matchText/timeout résolus dans le détail de l'erreur.

Diagramme d'exécution

flowchart TD
    Start([WaitForElement]) --> CheckConnected{Service d'accessibilité\nconnecté ?}
    CheckConnected -->|Non| E1[SCREEN-AUTOMATOR-ERROR-010\nSERVICE_NOT_CONNECTED]
    CheckConnected -->|Oui| Search["Recherche dans l'arbre\n(tout nœud)"]
    Search --> Found{Correspondance\ntrouvée ?}
    Found -->|Oui| Success([VoidResult])
    Found -->|Non| Timeout{Temps écoulé ≥\ntimeout_ms ?}
    Timeout -->|Non| Sleep[attendre 300ms] --> Search
    Timeout -->|Oui| E2[SCREEN-AUTOMATOR-ERROR-011\nACTION_FAILED]

    E1 --> Error([Exception])
    E2 --> Error

    style Start fill:#e3f2fd
    style Success fill:#c8e6c9
    style Error fill:#ffcdd2
    style Search fill:#f3e5f5

Fonctionnement :

  1. Vérifier la connexion : échoue immédiatement avec SERVICE_NOT_CONNECTED si le service d'accessibilité n'est pas activé.
  2. Sonder : vérifie une correspondance avec WaitForElement_matchText ; si non trouvé, attend 300ms et revérifie.
  3. Résoudre : retourne un succès dès qu'une correspondance est trouvée ; lève ACTION_FAILED une fois timeout_ms écoulé sans correspondance.

Exemples de code

Exemple 1 - Attendre une boîte de dialogue de confirmation

{
  "WaitForElement": [
    {
      "id": "1",
      "title": "Attendre la boîte de confirmation",
      "WaitForElement_textSelector": "text",
      "WaitForElement_CompareType": "contain",
      "WaitForElement_Index": 0,
      "WaitForElement_matchText": "Confirm",
      "WaitForElement_timeout_ms": 8000
    }
  ]
}

Détails des paramètres d'entrée

1. Paramètre d'entrée : WaitForElement_textSelector

Mêmes 7 valeurs que Click In Element > ClickInElement_textSelector, dont anyOf.

Exemple

"WaitForElement_textSelector": "text"

2. Paramètre d'entrée : WaitForElement_CompareType

exactText, startWith, ou contain (insensible à la casse).

Exemple

"WaitForElement_CompareType": "contain"

3. Paramètre d'entrée : WaitForElement_Index

Si plusieurs éléments correspondent, sélectionne le n-ième (base 0).

Exemple

"WaitForElement_Index": 0

4. Paramètre d'entrée : WaitForElement_matchText

La valeur à faire correspondre.

Exemple

"WaitForElement_matchText": "Confirm"

5. Paramètre d'entrée : WaitForElement_timeout_ms

Durée maximale de sondage avant de lever ACTION_FAILED. Défaut 5000.

Exemple

"WaitForElement_timeout_ms": 8000

Détails des paramètres de sortie

Cette tâche n'a pas de paramètres de sortie.


Exemple JSON complet

{
  "WaitForElement": [
    {
      "id": "1",
      "title": "Attendre le bouton Login",
      "WaitForElement_textSelector": "text",
      "WaitForElement_CompareType": "exactText",
      "WaitForElement_Index": 0,
      "WaitForElement_matchText": "Login",
      "WaitForElement_timeout_ms": 10000
    }
  ]
}