Imported from toto-fou/Elpis (
skills/robotframework/robotframework-selenium-web/SKILL.md). Install upstream withnpx skills add toto-fou/Elpis --skill robotframework-selenium-web. Copyright stays with the author.
Automatiser un parcours web avec SeleniumLibrary
Écrit des tests web Robot Framework stables : locators robustes, attentes
explicites (jamais de Sleep), exécution headless pour la CI.
Pré-requis
-
pip install robotframework-seleniumlibrary+ un navigateur et son driver (Chrome/chromedriver ou Firefox/geckodriver) accessibles dans lePATH. -
Patterns prêts à copier bundlés avec ce skill :
skill_read_file(name="robotframework/robotframework-selenium-web", path="references/selenium-patterns.robot")
Étapes
-
Importer et configurer les timeouts GLOBAUX (le vrai anti-flaky) :
*** Settings *** Library SeleniumLibrary timeout=10s implicit_wait=0timeouts'applique à tous les keywordsWait Until *. Laisserimplicit_waità 0 : l'attente implicite combinée aux waits explicites rend les échecs lents et imprévisibles. -
Ouvrir le navigateur (headless en CI) :
Open Browser ${URL} headlesschrome # ou : Open Browser ${URL} chrome options=add_argument("--window-size=1440,900") -
Choisir des locators robustes, dans cet ordre de préférence :
id=email(stable par construction) ;- attribut dédié aux tests :
css:[data-testid="submit"]; css:court ancré sur la structure proche (css:form.login button[type=submit]) ;xpath://button[normalize-space()="Valider"]en DERNIER recours (texte). Bannir les xpath positionnels (//div[3]/span[2]) : ils cassent au premier refactor du DOM.
-
Attendre EXPLICITEMENT avant chaque interaction sur un élément qui peut apparaître/changer :
Wait Until Element Is Visible css:[data-testid="submit"] Click Button css:[data-testid="submit"] Wait Until Location Contains /dashboardJamais
Sleep: une attente fixe est toujours soit trop courte (flaky), soit trop longue (suite lente). -
Encapsuler en keywords métier (« Se Connecter Avec ») et garder les locators en
*** Variables ***(ou un resource « page object ») : un changement d'UI = une seule ligne à corriger.
Vérification
- La suite passe 3 fois d'affilée en headless (
robot -d results …) — un test web qui ne passe que « souvent » est un test cassé. - Sur échec,
log.htmlembarque la capture d'écran automatique (Register Keyword To Run On Failure Capture Page Screenshotest le défaut de SeleniumLibrary).
Pièges
- Élément « not interactable » : il est dans le DOM mais pas visible/cliquable
— attendre
Element Is Visible(pas seulementPage Contains Element), ou scroller (Scroll Element Into View). StaleElementReferenceException: le DOM a été re-rendu entre la localisation et l'action — re-localiser via un keywordWait Untiljuste avant l'action, ne jamais stocker un élément longtemps.- iframe : aucun locator ne « voit » dedans sans
Select Framed'abord (Unselect Framepour revenir). - Headless a une taille de fenêtre minuscule par défaut → menus responsive
différents : toujours forcer
--window-size.
