Maison > Java > javaDidacticiel > Existe-t-il une fonction générique Selenium pour vérifier le chargement complet d'une page Web ?

Existe-t-il une fonction générique Selenium pour vérifier le chargement complet d'une page Web ?

Patricia Arquette
Libérer: 2024-12-29 01:06:10
original
895 Les gens l'ont consulté

Is There a Generic Selenium Function to Verify Complete Web Page Loading?

Avons-nous une fonction générique pour vérifier si la page est complètement chargée dans Selenium ?

Vous essayez de déterminer si une page Web a chargement terminé avec Selenium. Bien que vous ayez tenté d'utiliser le code, même lorsque la page est en cours de chargement, elle n'attend pas. Vous recherchez une solution générique par opposition à une solution qui examine la visibilité ou la cliquabilité d'un élément particulier.

Réponse :

Non, il n'existe pas de méthode générique Selenium pour confirmer la chargement complet d'une page web.

Explication :

Voyons examinez votre code :

new WebDriverWait(firefoxDriver, pageLoadTimeout).until(
          webDriver -> ((JavascriptExecutor) webDriver).executeScript("return document.readyState").equals("complete"));
Copier après la connexion

La variable pageLoadTimeout dans ce code ne correspond pas réellement à la vraie fonction pageLoadTimeout().

Cependant, pour votre cas d'utilisation consistant à vérifier si une page a complètement chargé, vous pouvez utiliser pageLoadStrategy() défini sur "normal" (les autres valeurs possibles incluent "aucun" et "eager") en utilisant les classes DesiredCapabilities ou ChromeOptions. Voici des exemples :

Utilisation de DesiredCapabilities :

DesiredCapabilities dcap = new DesiredCapabilities();
dcap.setCapability("pageLoadStrategy", "normal");
FirefoxOptions opt = new FirefoxOptions();
opt.merge(dcap);
WebDriver driver = new FirefoxDriver(opt);
Copier après la connexion

Utilisation des options Chrome :

ChromeOptions opt = new ChromeOptions();
opt.setPageLoadStrategy(PageLoadStrategy.NORMAL);
WebDriver driver = new FirefoxDriver(opt);
Copier après la connexion

Considérations :

Définition de la stratégie de chargement de page La valeur "normal" garantit que le client du navigateur a atteint l'état dans lequel "document.readyState" est égal à "complet". Cependant, cela ne garantit pas que tous les appels JavaScript et Ajax soient terminés.

Pour résoudre ce problème, vous pouvez utiliser une fonction pour attendre la fin de tous les appels JavaScript et Ajax :

public void WaitForAjax2Complete() throws InterruptedException
{
    while (true)
    {
        if ((Boolean) ((JavascriptExecutor)driver).executeScript("return jQuery.active == 0")){
            break;
        }
        Thread.sleep(100);
    }
}
Copier après la connexion

Vous pouvez également utiliser WebDriverWait en conjonction avec ExpectedConditions pour attendre un événement ou un élément spécifique. état :

// Wait for a specific part of the page title
new WebDriverWait(driver, 10).until(ExpectedConditions.titleContains("partial_title_of_application_under_test"));

// Wait for a specific element to become visible
WebElement ele = new WebDriverWait(driver, 10).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_of_the_desired_element")));
Copier après la connexion

Références :

  • [Selenium IE WebDriver ne fonctionne que pendant débogage](https://stackoverflow.com/questions/23791841/selenium-ie-webdriver-only-works-while-debugging)
  • [Selenium comment gérer l'attente de la page charger ?](https://stackoverflow.com/questions/19750811/selenium-how-to-manage-wait-for-page-load)
  • [Stratégie de chargement de page pour Chrome pilote](https://stackoverflow.com/questions/55985139/page-load-strategy-for-chrome-driver-updated-till-selenium-v3-12-0)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal