
Exemple 2 : Utilisation des keywords de librairies - `Open Browser`, `Input Text` (SeleniumLibrary)
Maîtrisez `Open Browser` et `Input Text` de SeleniumLibrary pour Robot Framework. Apprenez à automatiser l'ouverture de navigateurs et la saisie de texte dans les formulaires web.
Dompter le web : introduction à `SeleniumLibrary` et ses keywords phares
Lorsque l'on parle d'automatisation des tests web avec Robot Framework, la librairie `SeleniumLibrary` est incontournable. Elle sert de pont entre la syntaxe lisible de Robot Framework et la puissance de Selenium WebDriver, l'outil de référence pour piloter les navigateurs. Grâce à `SeleniumLibrary`, vous pouvez simuler des actions utilisateur complexes, interagir avec des éléments de page et vérifier le contenu web, le tout avec des keywords simples et expressifs.
Avant d'utiliser `SeleniumLibrary`, assurez-vous de l'avoir installée (`pip install robotframework-seleniumlibrary`) et que les drivers des navigateurs que vous souhaitez piloter (ChromeDriver pour Chrome, GeckoDriver pour Firefox, etc.) sont présents dans votre `PATH` ou spécifiés correctement. Ensuite, vous l'importez dans la section `*** Settings ***` de vos scripts.
Dans cet exemple, nous allons nous concentrer sur deux des keywords les plus fondamentaux et fréquemment utilisés de `SeleniumLibrary` : `Open Browser` pour lancer et diriger un navigateur vers une URL, et `Input Text` pour saisir du texte dans des champs de formulaire. Ces deux keywords sont les premières étapes de la plupart des scénarios de test web.
Le keyword `Open Browser` : la porte d'entrée de vos tests web
Le keyword `Open Browser` est, comme son nom l'indique, celui qui initie l'interaction avec une application web. Il lance une nouvelle instance du navigateur spécifié et la dirige vers l'URL fournie. C'est généralement le premier keyword de `SeleniumLibrary` appelé dans un test ou dans un `Test Setup` / `Suite Setup`.
Syntaxe courante :
Open Browser url browser [alias=None] [remote_url=False] [desired_capabilities=None] [ff_profile_dir=None] [options=None] [service_log_path=None] [executable_path=None]Les arguments les plus importants sont :
- `url` : L'adresse web complète à laquelle le navigateur doit naviguer (ex: `https://www.certiquizz.com`).
- `browser` : Le nom du navigateur à utiliser. Les valeurs courantes sont `chrome`, `firefox`, `edge`, `safari`, `ie`. La casse est généralement ignorée. Assurez-vous que le WebDriver correspondant est installé et accessible.
- `alias` (optionnel) : Un nom que vous pouvez donner à cette instance de navigateur. Utile si vous devez gérer plusieurs navigateurs ouverts simultanément dans un même test. Vous pourrez ensuite cibler ce navigateur spécifique en utilisant son alias avec d'autres keywords.
- `options` (optionnel) : Permet de passer des options spécifiques au navigateur, par exemple pour le lancer en mode headless (sans interface graphique), définir un profil utilisateur, etc. La syntaxe dépend du navigateur (ex: `add_argument("--headless")` pour Chrome).
*** Settings ***
Library SeleniumLibrary timeout=15s # Timeout global pour les actions SeleniumLibrary
*** Variables ***
${URL_DEMO} https://the-internet.herokuapp.com/login
${NAVIGATEUR} chrome
*** Test Cases ***
Ouverture Simple de Navigateur
Open Browser ${URL_DEMO} ${NAVIGATEUR}
Log To Console Le navigateur ${NAVIGATEUR} est ouvert sur l'URL : ${URL_DEMO}
# A ce stade, le navigateur est ouvert sur la page de login de the-internet.herokuapp.com
# Il est important d'ajouter un Close Browser ou Close All Browsers à la fin du test ou en Teardown
Close Browser
Ouverture de Navigateur avec Options (Headless Chrome)
${chrome_options} = Evaluate sys.modules['selenium.webdriver.chrome.options'].Options() sys, selenium.webdriver.chrome.options
Call Method ${chrome_options} add_argument --headless
Call Method ${chrome_options} add_argument --disable-gpu # Recommandé en headless
Open Browser ${URL_DEMO} ${NAVIGATEUR} options=${chrome_options}
Log To Console Navigateur Chrome ouvert en mode headless.
Page Should Contain Login Page
Close BrowserLe keyword `Open Browser` crée une session de navigateur active. La plupart des autres keywords de `SeleniumLibrary` opéreront sur le dernier navigateur ouvert, à moins qu'un alias ne soit utilisé pour changer de contexte.
Le keyword `Input Text` : interagir avec les formulaires
Une fois le navigateur ouvert sur la bonne page, l'une des interactions les plus courantes est la saisie de texte dans des champs de formulaire (champs de recherche, identifiants, mots de passe, etc.). C'est là qu'intervient le keyword `Input Text`.
Syntaxe de base :
Input Text locator text [clear=True]- `locator` : C'est la stratégie utilisée par Selenium pour trouver l'élément web dans lequel taper le texte. Les stratégies de localisation courantes sont préfixées (ex: `id:mon_champ`, `name:nom_utilisateur`, `xpath://input[@type='text']`, `css:.ma-classe input`). Si aucun préfixe n'est donné, Selenium essaiera plusieurs stratégies par défaut (souvent `id` puis `name`).
- `text` : La chaîne de caractères à saisir dans l'élément.
- `clear` (optionnel, défaut `True`) : Si `True`, le champ est vidé de tout contenu existant avant la saisie du nouveau texte. Mettez à `False` si vous voulez ajouter du texte à un contenu existant.
*** Settings ***
Library SeleniumLibrary
*** Variables ***
${URL_LOGIN_PAGE} https://the-internet.herokuapp.com/login
${BROWSER_TYPE} firefox
${USERNAME} tomsmith
${PASSWORD_VALID} SuperSecretPassword!
*** Test Cases ***
Test de Connexion Simple
[Documentation] Ouvre la page de login, saisit les identifiants et soumet le formulaire.
Open Browser ${URL_LOGIN_PAGE} ${BROWSER_TYPE}
Maximize Browser Window
Page Should Contain Element id:username # Attendre que le champ username soit présent
# Saisie dans le champ username (localisé par son ID)
Input Text id:username ${USERNAME}
Log Nom d'utilisateur '${USERNAME}' saisi.
# Saisie dans le champ password (localisé par son ID)
Input Text id:password ${PASSWORD_VALID}
Log Mot de passe saisi.
# Pour illustrer `clear=False` (optionnel)
# Supposons qu'on veuille ajouter "123" à un champ déjà rempli par "test"
# Input Text id:some_other_field test
# Input Text id:some_other_field 123 clear=False # Le champ contiendrait "test123"
Click Button css:button[type='submit'] # Ou xpath://button[@type='submit'] ou //button[contains(.,'Login')]
Page Should Contain You logged into a secure area!
[Teardown] Close All Browsers # Bonne pratique de nettoyer après le testLe choix du `locator` est crucial pour la robustesse de vos tests. Préférez des `id` uniques lorsque disponibles, car ils sont généralement les plus rapides et les moins sujets aux changements. `css` et `xpath` sont plus flexibles mais peuvent être plus complexes à écrire et à maintenir.
En combinant `Open Browser` pour accéder à la page et `Input Text` pour remplir les formulaires, vous disposez déjà des outils pour automatiser une grande partie des scénarios de test impliquant une saisie utilisateur. Ces keywords, bien que simples en apparence, sont les fondations de scripts d'automatisation web plus élaborés.