Contactez-nous

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).
Exemple d'utilisation :
*** 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 Browser

Le 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.
Exemple d'utilisation (enchaîné avec `Open Browser`) :
*** 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 test

Le 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.