Tâche Scroll To Element
Résumé
- Nom interne :
ScrollToElement - Catégorie : Android UI
- Objectif : Répéter un balayage dans une direction jusqu'à trouver un élément correspondant à un sélecteur, ou épuisement d'un nombre maximum de tentatives.
- 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 Scroll To Element combine Scroll et une recherche d'élément en une seule boucle : elle vérifie d'abord si l'élément est déjà visible, et sinon, balaie une fois dans ScrollToElement_direction, attend ~400ms que l'interface se stabilise, puis revérifie - jusqu'à ScrollToElement_maxAttempts balayages. Comme Scroll, elle ne clique pas sur l'élément une fois trouvé - enchaînez avec une tâche Click In Element ensuite si besoin. Conserver cette séparation des responsabilités (défiler-jusqu'à-trouver vs. cliquer) reflète la scission intentionnelle de l'ancienne tâche combinée ScreenAutomator.
Paramètres d'entrée
| Paramètre | Type | Requis | Valeurs possibles | Compatibilité Android | Compatibilité AndroMate | Défaut |
|---|---|---|---|---|---|---|
ScrollToElement_direction |
Enum / String (résolvable) | Oui | Up, Down, Left, Right |
Android 13 (API 33) -> Android 16 (API 36) | 1.1.0 -> 1.1.0 | "" |
ScrollToElement_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 | "" |
ScrollToElement_CompareType |
Enum / String (résolvable) | Oui | exactText, startWith, contain |
Android 13 (API 33) -> Android 16 (API 36) | 1.1.0 -> 1.1.0 | "" |
ScrollToElement_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 |
ScrollToElement_matchText |
String (résolvable) | Oui | La valeur à faire correspondre | Android 13 (API 33) -> Android 16 (API 36) | 1.1.0 -> 1.1.0 | "" |
ScrollToElement_maxAttempts |
Entier (résolvable) | Non | ≥ 0 balayages | Android 13 (API 33) -> Android 16 (API 36) | 1.1.0 -> 1.1.0 | 10 |
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-003 |
Invalid Action Type | ScrollToElement_direction n'est ni Up, Down, Left, ni Right. |
SCREEN-AUTOMATOR-ERROR-006 |
Unsupported Text Selector | ScrollToElement_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 | L'élément n'est jamais apparu en ScrollToElement_maxAttempts balayages - inclut la direction/sélecteur/compare/index/matchText/maxAttempts résolus dans le détail de l'erreur. |
Diagramme d'exécution
flowchart TD
Start([ScrollToElement]) --> CheckConnected{Service d'accessibilité\nconnecté ?}
CheckConnected -->|Non| E1[SCREEN-AUTOMATOR-ERROR-010\nSERVICE_NOT_CONNECTED]
CheckConnected -->|Oui| Check[Vérifier correspondance]
Check --> Found{Trouvé ?}
Found -->|Oui| Success([VoidResult])
Found -->|Non| Attempts{tentative ==\nmaxAttempts ?}
Attempts -->|Oui| E2[SCREEN-AUTOMATOR-ERROR-011\nACTION_FAILED]
Attempts -->|Non| Swipe[Défiler d'un pas\ndans la direction] --> Wait[attendre 400ms] --> Check
E1 --> Error([Exception])
E2 --> Error
style Start fill:#e3f2fd
style Success fill:#c8e6c9
style Error fill:#ffcdd2
style Swipe fill:#fff9c4
style Check fill:#f3e5f5
Fonctionnement :
- Vérifier la connexion : échoue immédiatement avec
SERVICE_NOT_CONNECTEDsi le service d'accessibilité n'est pas activé. - Vérifier d'abord : cherche une correspondance avec
ScrollToElement_matchTextavant tout défilement - réussit immédiatement si déjà visible. - Défiler et réessayer : si non trouvé et qu'il reste des tentatives, balaie une fois dans
ScrollToElement_direction, attend ~400ms, et revérifie. - Abandonner : lève
ACTION_FAILEDune foismaxAttemptsbalayages effectués sans correspondance.
Exemples de code
Exemple 1 - Défiler vers le bas jusqu'à voir le lien "Terms of Service"
{
"ScrollToElement": [
{
"id": "1",
"title": "Trouver le lien Terms of Service",
"ScrollToElement_direction": "Down",
"ScrollToElement_textSelector": "text",
"ScrollToElement_CompareType": "contain",
"ScrollToElement_Index": 0,
"ScrollToElement_matchText": "Terms of Service",
"ScrollToElement_maxAttempts": 15
}
]
}
Détails des paramètres d'entrée
1. Paramètre d'entrée : ScrollToElement_direction
Mêmes valeurs que Scroll > Scroll_direction : Up, Down, Left, Right.
Exemple
2. Paramètre d'entrée : ScrollToElement_textSelector
Mêmes 7 valeurs que Click In Element > ClickInElement_textSelector, dont anyOf.
Exemple
3. Paramètre d'entrée : ScrollToElement_CompareType
exactText, startWith, ou contain (insensible à la casse).
Exemple
4. Paramètre d'entrée : ScrollToElement_Index
Si plusieurs éléments correspondent, sélectionne le n-ième (base 0).
Exemple
5. Paramètre d'entrée : ScrollToElement_matchText
La valeur à faire correspondre.
Exemple
6. Paramètre d'entrée : ScrollToElement_maxAttempts
Nombre maximum de balayages avant de lever ACTION_FAILED. Défaut 10.
Exemple
Détails des paramètres de sortie
Cette tâche n'a pas de paramètres de sortie.
Exemple JSON complet
{
"ScrollToElement": [
{
"id": "1",
"title": "Défiler jusqu'au bouton Submit",
"ScrollToElement_direction": "Down",
"ScrollToElement_textSelector": "text",
"ScrollToElement_CompareType": "exactText",
"ScrollToElement_Index": 0,
"ScrollToElement_matchText": "Submit",
"ScrollToElement_maxAttempts": 10
}
]
}