Actualiser la page en utilisant Selenium Pilote Web
⚡ Résumé intelligent
Actualiser une page dans Selenium WebDriver recharge la version actuelle URL de sorte que chaque élément soit rendu avant l'exécution des assertions, et le framework propose cinq commandes distinctes qui permettent d'obtenir le même rechargement de différentes manières.

Lors de l'automatisation des tests d'une application web, il est parfois nécessaire d'actualiser la page plusieurs fois pour que tous les éléments web soient entièrement chargés. Au premier chargement, certains éléments peuvent être chargés, tandis qu'une seconde actualisation est nécessaire pour que tous apparaissent. Ceci peut être réalisé à l'aide de la commande d'actualisation fournie par Selenium Pilote Web.
Comment actualiser la page dans Selenium
L'opération d'actualisation du navigateur peut être effectuée de la manière suivante Selenium. Nous discuterons en détail des méthodes mentionnées ci-dessous tout au long de l’article.
- commande driver.navigate().refresh()
- Méthode Get
- Commande Envoyer les clés
- Méthode de navigation
- commande driver.navigate().to()
1) Commande driver.navigate().refresh()
Il s'agit de la méthode intégrée pour effectuer une opération d'actualisation de page fournie par Selenium WebDriver. Cette commande est la plus couramment utilisée dans l'automatisation des tests pour effectuer une actualisation de page. La commande d'actualisation peut être utilisée simplement, comme indiqué ci-dessous.
driver.get("https://demo.guru99.com/selenium/guru99home/");
driver.navigate().refresh();
L'interface Navigation permet d'effectuer diverses opérations du navigateur, comme la navigation vers la page précédente ou suivante, l'actualisation de la page et la fermeture du navigateur. Les méthodes de l'interface Navigation sont accessibles via la commande `driver.navigate()`. La méthode `refresh` de l'interface Navigation ne prend aucun argument et ne renvoie aucune valeur.
Exemple :
Scénario de test:
- Ouvrez le navigateur Chrome avec la page Web https://demo.guru99.com/selenium/guru99home/
- Une fois la page chargée avec succès, actualisez-la à l'aide de la méthode driver.navigate().refresh().
- Fermez le navigateur à l'aide de la méthode driver.close()
Code
package Guru99Demo; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; public class RefreshDemo { public static void main(String args[]) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://demo.guru99.com/selenium/guru99home/"); driver.manage().window().maximize(); driver.navigate().refresh(); driver.close(); } }
⚠️ Note de version : Selenium Gestionnaire livré avec Selenium 4.6 et télécharge automatiquement le pilote de navigateur correspondant, la ligne System.setProperty ci-dessus n'est donc plus nécessaire sur une version actuelle. new ChromeDriver() Cela suffit. La phrase originale est conservée car elle reste correcte pour le Selenium 3 configurations de style ont servi de base à l'exemple écrit.
Code Sortie :
Au chargement initial, la page d'accueil de démonstration s'affiche comme indiqué ci-dessous.
Après l'actualisation de la page, la vidéo affichée a changé, ce qui confirme que le rechargement a bien eu lieu.
Plusieurs autres façons d'actualiser une page
La méthode d'actualisation n'est pas la seule façon de recharger une application. Les quatre techniques ci-dessous produisent le même résultat et il est utile de les connaître, car une application verrouillée ou un navigateur récalcitrant peuvent parfois en bloquer une.
2) Méthode Get
La méthode `get` peut être utilisée de manière récursive pour actualiser une page. Pour ce faire, il faut lui passer une autre méthode en argument.
Exemple :
driver.get("https://www.guru99.com");
driver.get(driver.getCurrentUrl());
3) Méthode de navigation
Cette méthode utilise le même concept de récursivité que celui mentionné précédemment. La méthode `getCurrentUrl()` est passée comme argument à la méthode `driver.navigate().to()`.
Exemple :
driver.get("https://www.guru99.com");
driver.navigate().to(driver.getCurrentUrl());
4) Méthode d'envoi de touches à l'aide de la touche F5
Il s'agit de la deuxième méthode la plus couramment utilisée pour actualiser une page dans SeleniumCette méthode prend la touche d'actualisation (F5) comme argument. Comme sendKeys fonctionne uniquement sur les éléments web et non sur le navigateur, il est nécessaire d'identifier au préalable un élément web valide sur la page web avant d'utiliser la méthode sendKeys. La procédure est illustrée ci-dessous.
Exemple :
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys(Keys.F5);
Étant donné que la frappe au clavier est transmise à un élément plutôt qu'à l'interface du navigateur, ce chemin dépend de l'élément qui détient le focus. Si le localisateur Si la touche correspond à un champ qui ne peut pas recevoir le focus, elle est ignorée et la page ne se recharge jamais.
5) Méthode d'envoi de clés utilisant l'ASCII Code
Cette méthode utilise le même principe que la précédente, mais au lieu de transmettre la touche F5 comme argument, elle transmet le point de code de la touche d'actualisation. Voici comment procéder :
driver.get("https://www.guru99.com"); driver.findElement(By.id("username")).sendKeys("\uE035");
La valeur \uE035 est le point de code Unicode WebDriver que le protocole associe à F5, donc cet extrait et le précédent sont équivalents.
Comment actualiser une page à l'aide de JavaExécuteur de script
Chaque navigateur expose une fonction de rechargement aux scripts de page, et Selenium peut l'appeler via le JavascriptInterface d'exécution. Il s'agit du comportement par défaut lorsque la commande d'actualisation WebDriver est interceptée par l'application ou par une extension de navigateur.
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("location.reload();");
Deux variantes sont à retenir :
- emplacement.recharger() effectue un rechargement normal et peut servir la page à partir du cache.
- histoire.go(0) est un équivalent plus ancien que certaines suites logicielles héritées utilisent encore.
La route d'exécution s'exécute à l'intérieur de la page ; elle n'attend donc pas automatiquement le nouveau document. Faites-la suivre d'une attente explicite, exactement comme vous le feriez après `driver.navigate().refresh()`, et n'oubliez pas qu'un rechargement piloté par script ne fermera pas la boîte de dialogue du navigateur. Si l'application testée charge son contenu de manière asynchrone, les mêmes précautions s'appliquent. gestion des appels AJAX dans Selenium pilote web.
Comment éviter l'exception StaleElementReferenceException après une actualisation
Une actualisation détruit le DOM actuel et en crée un nouveau. Chaque élément WebElement capturé avant le rechargement pointe désormais vers un nœud inexistant ; par conséquent, tout appel ultérieur à cet élément lève une exception StaleElementReferenceException. Il s'agit de l'erreur la plus fréquente suite à une actualisation de page.
Trois habitudes permettent d'éviter presque tous ces échecs :
- Localisez après, jamais avant. Stockez le localisateur By plutôt que l'élément WebElement, et appelez à nouveau findElement une fois le rechargement terminé.
- Attendez un vrai signal. Attendre explicitement la visibilité d'un élément qui n'existe qu'après le rechargement est bien plus fiable qu'une pause fixe.
- Actualisez la page, puis relisez. Ne jamais inclure une valeur textuelle ou un attribut capturé avant le rechargement dans une assertion effectuée après celui-ci.
Le modèle ci-dessous s'applique aux trois :
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); driver.navigate().refresh(); WebElement search = wait.until( ExpectedConditions.visibilityOfElementLocated(By.id("username"))); search.sendKeys("guru99");
WebDriverWait prend une durée en Selenium 4, ce qui constitue un changement par rapport au constructeur de secondes entières utilisé dans Selenium 3. Des techniques plus générales pour ces défaillances sont présentées dans notre guide. gestion des exceptions dans Selenium.
Comparaison de Selenium Méthodes d'actualisation de page
Les six commandes rechargent la page, mais elles diffèrent par leurs dépendances et par la manière dont elles échouent.
| Méthode | Dépend de | Rechargement via | Quand c'est le bon choix |
|---|---|---|---|
| pilote.navigate().refresh() | Rien de plus | La commande de rechargement du navigateur | Presque toujours — la valeur par défaut |
| pilote.get(pilote.getCurrentUrl()) | Un courant lisible URL | Une navigation renouvelée | Lorsque vous souhaitez également supprimer l'entrée d'historique |
| pilote.navigate().to(pilote.getCurrentUrl()) | Un courant lisible URL | Une navigation renouvelée | Idem ci-dessus, écrit via l'interface de navigation |
| envoyerTouches(Touches.F5) | Un élément focalisable | Une touche | Lorsque vous testez délibérément le chemin du clavier |
| envoyerKeys("\uE035") | Un élément focalisable | Une touche | Identique à F5, écrit sous forme de point de code |
| JavascriptExécuteur location.recharger() | Scripting activé | Un script de page | Lorsque la commande WebDriver est bloquée |
Commencez par la commande d'actualisation et ne passez à une autre ligne que si l'opération échoue pour une raison que vous comprenez. Le même ordre de préférence s'applique lorsque vous agrandir ou redimensionner la fenêtre du navigateur: privilégier l'appel WebDriver natif et considérer la route du script comme solution de repli.


