*** Settings *** Documentation Widgets de saisie des résultat et de saisie de la participation Resource resources/resources.robot Suite Setup Run Keywords ... For Suite Setup ... AND Supprimer toutes les élections existantes ... AND Jeu de données Suite Teardown For Suite Teardown *** Test Cases *** # ----------------------------------------------------------------------------- # Tests communs aux deux widgets # ----------------------------------------------------------------------------- Les widgets s'affichent sans erreur quand aucune élection n'est en cours Depuis la page d'accueil test_051 test_051 Element Should Contain css=#widget_${widget_participation_id} Aucune élection en cours. Element Should Contain css=#widget_${widget_resultat_liste_id} Aucune élection en cours. Element Should Contain css=#widget_${widget_resultat_tableau_id} L’élection Deuxième élection sans délégation n’est pas en cours. Les widgets affichent correctement la seule élection en cours, en fonction de l'argument identifiant_election Depuis le contexte election ${election_sans_delegation_id} Passer à l'étape suivante simulation Simulation Depuis la page d'accueil test_051 test_051 # La seule élection en cours devrait être sélectionnée List Selection Should Be css=#widget_${widget_participation_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation List Selection Should Be css=#widget_${widget_resultat_liste_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation # Avec l'argument identifiant_election, l'élection configurée n'étant pas en cours, elle ne devrait pas s'afficher Element Should Contain css=#widget_${widget_resultat_tableau_id} L’élection Deuxième élection sans délégation n’est pas en cours. Les widgets affichent correctement plusieurs élections en cours, en fonction de l'argument identifiant_election Depuis la page d'accueil admin admin Depuis le contexte election ${election_avec_delegation_id} Passer à l'étape suivante simulation Simulation Depuis le contexte election ${election_avec_delegation_id} Passer à l'étape suivante saisie Saisie Depuis le contexte election ${election_sans_delegation_2_id} Passer à l'étape suivante simulation Simulation Depuis la page d'accueil test_051 test_051 # Les deux élections en cours devraient être dispo mais aucune sélectionnée à la base List Selection Should Be css=#widget_${widget_participation_id} [name="election"] Choisir Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation List Selection Should Be css=#widget_${widget_resultat_liste_id} [name="election"] Choisir Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation # Avec l'argument identifiant_election, la seule élection configurée devrait être dispo, et sélectionnée de base List Selection Should Be css=#widget_${widget_resultat_tableau_id} [name="election"] ${election_sans_delegation_2_id} - Deuxième élection sans délégation # ----------------------------------------------------------------------------- # Widget de saisie de participation # ----------------------------------------------------------------------------- Les horaires affichés dans le widget de participation sont bien ceux de l'élection sélectionnée quand la délégation est désactivée Depuis la page d'accueil test_051 test_051 Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="unite"] Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 09:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 10:00:00 Run Keyword And Expect Error NoSuchElementException: Message: Could not locate element with visible text: 11:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 11:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_sans_delegation_2_id} - Deuxième élection sans délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="unite"] Run Keyword And Expect Error NoSuchElementException: Message: Could not locate element with visible text: 09:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 09:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 11:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 12:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 13:00:00 Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 14:00:00 Les unités affichées dans le widget de participation sont bien celles de l'élection sélectionnée quand la délégation est activée Depuis la page d'accueil test_051 test_051 Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="tranche"] # Election avec délégation : on ne voit qu'une unité et elle est déjà sélectionnée List Selection Should Be css=#widget_${widget_participation_id} [name="unite"] 3 - Ecole A Run Keyword And Expect Error NoSuchElementException: Message: Could not locate element with visible text: 1 - Salle des Mariages Select From List By Label css=#widget_${widget_participation_id} [name="unite"] 1 - Salle des Mariages # Pour un utilisateur sans délégation, il n'y a rien à faire à sélectionner Depuis la page d'accueil admin admin Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="tranche"] # Election avec délégation : on ne voit qu'une unité et elle est déjà sélectionnée List Should Have No Selections css=#widget_${widget_participation_id} [name="unite"] Run Keyword And Expect Error NoSuchElementException: Message: Could not locate element with visible text: 3 - Ecole A Select From List By Label css=#widget_${widget_participation_id} [name="unite"] 3 - Ecole A La saisie de la participation depuis le widget est bien prise en compte Depuis la page d'accueil test_051 test_051 Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="unite"] Select From List By Label css=#widget_${widget_participation_id} [name="tranche"] 09:00:00 Click Button css=#widget_${widget_participation_id} button Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content Input Text css=#unite1 111 Input Text css=#unite2 202 Input Text css=#unite3 103 Input Text css=#unite4 96 Input Text css=#unite5 105 Input Text css=#unite6 154 Click On Submit Button In Subform Valid Message Should Contain In Subform Participations enregistrées : # Vérification des valeurs enregistrées Depuis le contexte participation_election ${election_sans_delegation_id} 09:00:00 ${value} = Get Value css=#unite1 Should Be Equal ${value} 111 ${value} = Get Value css=#unite2 Should Be Equal ${value} 202 ${value} = Get Value css=#unite3 Should Be Equal ${value} 103 ${value} = Get Value css=#unite4 Should Be Equal ${value} 96 ${value} = Get Value css=#unite5 Should Be Equal ${value} 105 ${value} = Get Value css=#unite6 Should Be Equal ${value} 154 La saisie de la participation depuis le widget est bien prise en compte, avec la délégation Depuis la page d'accueil test_051 test_051 Select From List By Label css=#widget_${widget_participation_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation Element Should Not Be Visible css=#widget_${widget_participation_id} [name="tranche"] Select From List By Label css=#widget_${widget_participation_id} [name="unite"] 3 - Ecole A Click Button css=#widget_${widget_participation_id} button Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content # Il devrait être impossible de saisir ces bureaux autre que le 3 car on a pas la délégation : on teste le 1 en exemple Element Should Not Be Visible css=#unite1 # tranche 9:00:00, je n'ai pas trouvé de meilleure manière de le sélectionner Input Text css=#fieldset-sousform-delegation_participation-participation input.champFormulaire[type="text"] 342 Click On Submit Button In Subform Valid Message Should Contain In Subform Vos modifications ont bien été enregistrées. # Vérification des valeurs enregistrées Depuis le contexte election ${election_avec_delegation_id} Click On Tab delegation_participation Participation(s) Click On Link 3 - Ecole A Click On SubForm Portlet Action delegation_participation modifier ${value} = Get Value css=#fieldset-sousform-delegation_participation-participation input.champFormulaire[type="text"] # tranche 09:00:00, je n'ai pas trouvé de meilleure manière de le sélectionner Should Be Equal ${value} 342 # ----------------------------------------------------------------------------- # Widget de saisie de résultats # ----------------------------------------------------------------------------- Les centaines dans le widget de résultat sont bien celles de l'élection sélectionnée Depuis la page d'accueil test_051 test_051 # Élection sans centaine : rien n'est sélectionné à la base mais on peut choisir Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation List Should Have No Selections css=#widget_${widget_resultat_liste_id} [name="type"] Select From List By Label css=#widget_${widget_resultat_liste_id} [name="type"] Centaine Élections sans délégation Select From List By Label css=#widget_${widget_resultat_liste_id} [name="type"] Résultats # Election sans centaine : le type résultat est pré-sélectionné Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation List Selection Should Be css=#widget_${widget_resultat_liste_id} [name="type"] Résultats # Mode tableau : ça doit marcher pareil, en l'occurence l'élection est pré-sélectionnée et n'a pas de centaine non plus List Selection Should Be css=#widget_${widget_resultat_tableau_id} [name="election"] ${election_sans_delegation_2_id} - Deuxième élection sans délégation List Selection Should Be css=#widget_${widget_resultat_tableau_id} [name="type"] Résultats Les unités dans le widget de résultat sont bien celles de l'élection sélectionnée en fonction de la délégation de saisie Depuis la page d'accueil test_051 test_051 # Élection sans délégation : on voit toutes les unités, quelque soir la centaine Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation List Should Have No Selections css=#widget_${widget_resultat_liste_id} [name="unite"] Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 1 - Salle des Mariages Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 2 - Salle des fetes 1 Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 3 - Ecole A Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 4 - Salle des fêtes 2 Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 5 - Gymnase Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 6 - Ecole B Select From List By Label css=#widget_${widget_resultat_liste_id} [name="type"] Centaine Élections sans délégation Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 1 - Salle des Mariages Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 2 - Salle des fetes 1 Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 3 - Ecole A Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 4 - Salle des fêtes 2 Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 5 - Gymnase Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 6 - Ecole B # Election avec délégation : on ne voit qu'une unité et elle est déjà sélectionnée Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation List Selection Should Be css=#widget_${widget_resultat_liste_id} [name="unite"] 3 - Ecole A Run Keyword And Expect Error NoSuchElementException: Message: Could not locate element with visible text: 1 - Salle des Mariages Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 1 - Salle des Mariages # En mode tableau, ça doit marcher pareil, sauf que l'affichage est différent. En l'occurence, on peut voir toutes les unités dès le début car l'élection est pré-sélectionnée List Selection Should Be css=#widget_${widget_resultat_tableau_id} [name="election"] ${election_sans_delegation_2_id} - Deuxième élection sans délégation List Selection Should Be css=#widget_${widget_resultat_tableau_id} [name="type"] Résultats Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 1 - Salle des Mariages Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 2 - Salle des fetes 1 Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 3 - Ecole A Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 4 - Salle des fêtes 2 Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 5 - Gymnase Element Should Contain css=#widget_${widget_resultat_tableau_id} .unite-holder table 6 - Ecole B La saisie des résultats sur une centaine depuis le widget est bien prise en compte Depuis la page d'accueil test_051 test_051 # Sélection de l'élection Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_sans_delegation_id} - Élections sans délégation Select From List By Label css=#widget_${widget_resultat_liste_id} [name="type"] Centaine Élections sans délégation Select From List By Label css=#widget_${widget_resultat_liste_id} [name="unite"] 3 - Ecole A Click Button css=#widget_${widget_resultat_liste_id} button[type="submit"] # Remplissage du formulaire Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content Page SubTitle Should Be Élections sans délégation > Centaine Élections sans délégation > 3 - Ecole A Input Text css=#blanc 6 Input Text css=#nul 4 Input Text css=#exprime 90 Input Text css=#candidat1 90 Click On Submit Button In Subform Valid Message Should Contain In Subform Vos modifications ont bien été enregistrées. # Vérification des valeurs enregistrées Depuis le contexte centaine ${election_sans_delegation_id} Centaine Élections sans délégation Element Text Should Be xpath=//div[@id="sousform-resultat_centaine"]/descendant::tr[descendant::*[contains(text(), "3 - Ecole A")]]/descendant::td[contains(@class, "col-7")] 6 # blanc Element Text Should Be xpath=//div[@id="sousform-resultat_centaine"]/descendant::tr[descendant::*[contains(text(), "3 - Ecole A")]]/descendant::td[contains(@class, "col-8")] 4 # nul Element Text Should Be xpath=//div[@id="sousform-resultat_centaine"]/descendant::tr[descendant::*[contains(text(), "3 - Ecole A")]]/descendant::td[contains(@class, "col-9")] 90 # exprime La saisie des résultats sur l'élection complète depuis le widget est bien prise en compte, avec la délégation Depuis la page d'accueil test_051 test_051 # Sélection de l'élection (le reste devrait être automatiquement sélectionné car il n'y a qu'une option) Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation Click Button css=#widget_${widget_resultat_liste_id} button[type="submit"] # Remplissage du formulaire Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content Page SubTitle Should Be Élections avec délégation > 3 - Ecole A Input Text css=#inscrit 200 Input Text css=#emargement 100 Input Text css=#procuration 12 Input Text css=#blanc 6 Input Text css=#nul 4 Input Text css=#exprime 90 Click On Submit Button In Subform Valid Message Should Contain In Subform Vos modifications ont bien été enregistrées. # Vérification des valeurs enregistrées Depuis le contexte election_unite ${election_avec_delegation_id} 3 - Ecole A ${value} = Get Text css=#inscrit Should Be Equal ${value} 200 ${value} = Get Text css=#emargement Should Be Equal ${value} 100 ${value} = Get Text css=#procuration Should Be Equal ${value} 12 ${value} = Get Text css=#blanc Should Be Equal ${value} 6 ${value} = Get Text css=#nul Should Be Equal ${value} 4 ${value} = Get Text css=#exprime Should Be Equal ${value} 90 La modale s'ouvre correctement sur une unité en cours de validation [Tags] regression [Setup] Marquer ce test comme échoué si le test précédent est raté # On réutilise les résultats entrés précédemment # Envoyer les résultats précédemment saisis en validation Depuis le contexte election_unite ${election_avec_delegation_id} 3 - Ecole A Demander la validation des résultats # On retourne sur la page d'accueil et on réessaie d'ouvrir le formulaire depuis le widget Go To Dashboard # Sélection de l'élection (le reste devrait être automatiquement sélectionné car il n'y a qu'une option) Select From List By Label css=#widget_${widget_resultat_liste_id} [name="election"] ${election_avec_delegation_id} - Élections avec délégation Click Button css=#widget_${widget_resultat_liste_id} button[type="submit"] # La page devrait charger correctement, en consultation car la modification n'est pas possible # On ne vérifie qu'un input : si un y est, les autres aussi logiquement Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content Page SubTitle Should Be Élections avec délégation > 3 - Ecole A Portlet Action Should Be In SubForm election_unite reprendre_saisie ${value} = Get Text css=#inscrit Should Be Equal ${value} 200 # TODO : ce test ne peut pas fonctionner au 2026-01-26 # car le javascript utilise une fonctionnalité (event.submitter) qui n'est pas dispo dans # Firefox 45. # Il sera à décommenter lors de la montée de version de robotframework et Firefox # L'affichage en mode tableau ouvre bien les bons formulaires sur chaque unité # Depuis la page d'accueil test_051 test_051 # # On teste avec plusieurs unités : on ouvre la modale, on vérifie que le contenu est le bon, puis on la ferme # Click Button xpath=//div[@id="widget_${widget_resultat_tableau_id}"]/descendant::div[contains(@class, "unite-holder")]/descendant::tr[descendant::*[contains(text(), "3 - Ecole A")]]/descendant::button # Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content # Page SubTitle Should Be Deuxième élection sans délégation > 3 - Ecole A # Click Button css=.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick # Wait Until Element Is Not Visible css=.ui-dialog # Click Button xpath=//div[@id="widget_${widget_resultat_tableau_id}"]/descendant::div[contains(@class, "unite-holder")]/descendant::tr[descendant::*[contains(text(), "1 - Salle des Mariages")]]/descendant::button # Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content # Page SubTitle Should Be Deuxième élection sans délégation > 1 - Salle des Mariages # Click Button css=.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick # Wait Until Element Is Not Visible css=.ui-dialog # Click Button xpath=//div[@id="widget_${widget_resultat_tableau_id}"]/descendant::div[contains(@class, "unite-holder")]/descendant::tr[descendant::*[contains(text(), "5 - Gymnase")]]/descendant::button # Wait Until Element Is Visible css=.ui-dialog .ui-dialog-content # Page SubTitle Should Be Deuxième élection sans délégation > 5 - Gymnase # Click Button css=.ui-dialog .ui-dialog-titlebar-close .ui-icon-closethick # Wait Until Element Is Not Visible css=.ui-dialog *** Keywords *** Jeu de données Depuis la page d'accueil admin admin &{acteur_01} = Create Dictionary ... nom=admin ... login=admin Ajouter l'acteur ${acteur_01} # Créer un utilisateur pour la délégation Ajouter l'utilisateur test_051 test_051@test_051.test_051 test_051 test_051 ADMINISTRATEUR # Ajout des elections &{election} = BuiltIn.Create Dictionary ... libelle=Élections sans délégation ... type_election=Municipales ... date=09/06/1995 ... perimetre=COMMUNE ... heure_ouverture=08:00:00 ... heure_fermeture=10:00:00 ${election_sans_delegation_id} = Ajouter election ${election} BuiltIn.Set Suite Variable ${election_sans_delegation_id} &{centaine} = BuiltIn.Create Dictionary ... libelle=Centaine Élections sans délégation Ajouter centaine à l'élection ${centaine} ${election_sans_delegation_id} &{candidat_test} = BuiltIn.Create Dictionary ... candidat=David G. Ajouter election_candidat ${candidat_test} ${election_sans_delegation_id} &{election} = BuiltIn.Create Dictionary ... libelle=Deuxième élection sans délégation ... type_election=Municipales ... date=10/06/1995 ... perimetre=COMMUNE ... heure_ouverture=10:00:00 ... heure_fermeture=14:00:00 ${election_sans_delegation_2_id} = Ajouter election ${election} BuiltIn.Set Suite Variable ${election_sans_delegation_2_id} &{candidat_test} = BuiltIn.Create Dictionary ... candidat=David G. Ajouter election_candidat ${candidat_test} ${election_sans_delegation_2_id} &{election} = BuiltIn.Create Dictionary ... libelle=Élections avec délégation ... type_election=Municipales ... date=09/06/1995 ... perimetre=COMMUNE ... delegation_saisie=true ... delegation_participation=true ${election_avec_delegation_id} = Ajouter election ${election} BuiltIn.Set Suite Variable ${election_avec_delegation_id} &{candidat_test} = BuiltIn.Create Dictionary ... candidat=David G. Ajouter election_candidat ${candidat_test} ${election_avec_delegation_id} &{delegation} = BuiltIn.Create Dictionary ... acteur=test_051 ... unite=3 - Ecole A Ajouter delegation ${delegation} ${election_avec_delegation_id} # Ajout des widgets &{widget} = Create Dictionary ... libelle=Saisie participation ... type=file - le contenu du widget provient d'un script sur le serveur ... script=saisie_participation ${widget_participation_id}= Ajouter un widget ${widget} BuiltIn.Set Suite Variable ${widget_participation_id} &{widget} = Create Dictionary ... libelle=Saisie des résultats ... type=file - le contenu du widget provient d'un script sur le serveur ... script=saisie_resultat ${widget_resultat_liste_id}= Ajouter un widget ${widget} BuiltIn.Set Suite Variable ${widget_resultat_liste_id} &{widget} = Create Dictionary ... libelle=Saisie des résultats de l'élection en mode tableau #${election_sans_delegation_2_id} ... type=file - le contenu du widget provient d'un script sur le serveur ... script=saisie_resultat ... arguments=mode_affichage_unites=tableau\nidentifiant_election=${election_sans_delegation_2_id} ${widget_resultat_tableau_id}= Ajouter un widget ${widget} BuiltIn.Set Suite Variable ${widget_resultat_tableau_id} # Ajout des widgets au dashboard Ajouter le widget au tableau de bord ADMINISTRATEUR Saisie participation Ajouter le widget au tableau de bord ADMINISTRATEUR Saisie des résultats Ajouter le widget au tableau de bord ADMINISTRATEUR Saisie des résultats de l'élection en mode tableau #${election_sans_delegation_2_id} *** Keywords *** # En vrai il suffirait pour ce test de passer les élections qui sont actuellement en saisie # ou en simulation dans un autre statut # Mais c'était plus rapide de tout supprimer Supprimer toutes les élections existantes Depuis la page d'accueil admin admin :FOR ${i} IN RANGE 999999 \ Go To Tab election \ ${status} ${election_id}= Run Keyword And Ignore Error Get Text css=#tab-election .col-0 .lienTable \ Exit For Loop If '${status}' != 'PASS' \ Click Link ${election_id} \ Supprimer l'élection depuis n'importe quelle étape ${election_id} Supprimer l'élection depuis n'importe quelle étape [Arguments] ${election} Wait Until Element Is Visible css=#etape-archivage ${present}= Run Keyword And Return Status Element Should Be Visible css=#etape-archivage .active Run Keyword If ${present} Retourner à l'étape précédente finalisation Finalisation Run Keyword If ${present} Reload Page ${present}= Run Keyword And Return Status Element Should Be Visible css=#etape-finalisation .active Run Keyword If ${present} Retourner à l'étape précédente saisie Saisie Run Keyword If ${present} Reload Page ${present}= Run Keyword And Return Status Element Should Be Visible css=#etape-saisie .active Run Keyword If ${present} Retourner à l'étape précédente simulation Simulation Run Keyword If ${present} Reload Page ${present}= Run Keyword And Return Status Element Should Be Visible css=#etape-simulation .active Run Keyword If ${present} Retourner à l'étape précédente parametrage Paramétrage Run Keyword If ${present} Reload Page Supprimer election ${election}