1
votes

Comment faire du sélénium pour recharger l'url souhaitée si le chargement prend trop de temps

Je veux que le sélénium force le navigateur à recharger la page qu'il charge si le processus de chargement prend trop de temps.

De StackOverflow j'ai ce code

new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd)
                .executeScript("return document.readyState").equals("complete"));

attendra que la page soit complètement chargée, mais je souhaite qu'elle soit rechargée si cela prend plus de 30 secondes.

Comment puis-je y parvenir?


2 commentaires

il existe un PageLoadTimeout: seleniumhq.github .io / selenium / docs / api / java / org / openqa / selen‌ ium /…


Juste pour clarifier, cette méthode WebDriverWait est pour les mises à jour de page côté client. Pour les chargements de page complète à partir du serveur, PageLoadTimeout entre en jeu.


3 Réponses :


1
votes

WebDriverWait avec une exception de dépassement de délai. Mettez votre code dans try / catch et rechargez la page à l'exception du délai d'expiration:

try {
    new WebDriverWait(driver, 30).until((ExpectedCondition<Boolean>) wd -> ((JavascriptExecutor) wd)
            .executeScript("return document.readyState").equals("complete"));
} catch (TimeoutException e) {
    // log a timeout
    // System.out.println("Page load timeout, refresh.");
    driver.navigate().refresh();
}


0 commentaires

0
votes

Essayez _driver.Navigate (). Refresh () ;


0 commentaires

1
votes

Pour recharger la page Web au cas où le processus de chargement prend trop de temps, vous pouvez configurer pageLoadTimeout . pageLoadTimeout définit la durée d'attente du chargement d'une page avant de générer une erreur. Si le délai d'expiration est négatif, les chargements de page peuvent être indéfinis.

Un exemple (en utilisant Selenium v3.141.59 et GeckoDriver v0.24.0):

  • Bloc de code:

    1565680787633   mozrunner::runner   INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\Debanjan.B\\AppData\\Local\\Temp\\rust_mozprofile.3jw3aiyfNAiQ"
    1565680826515   Marionette  INFO    Listening on port 56499
    1565680827329   Marionette  WARN    TLS certificate errors will be ignored for this session
    Aug 13, 2019 12:50:28 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    Aug 13, 2019 12:50:31 PM org.openqa.selenium.remote.ErrorCodes toStatus
    WebDriverException occured
    
  • Sortie de la console:

    public class pageLoadTimeout 
    {
        public static void main(String[] args) 
        {
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            WebDriver driver=new FirefoxDriver();
            driver.manage().timeouts().pageLoadTimeout(2, TimeUnit.SECONDS);
            try{
              driver.get("https://www.booking.com/hotel/in/the-taj-mahal-palace-tower.html?label=gen173nr-1FCAEoggJCAlhYSDNiBW5vcmVmaGyIAQGYATG4AQbIAQzYAQHoAQH4AQKSAgF5qAID;sid=338ad58d8e83c71e6aa78c67a2996616;dest_id=-2092174;dest_type=city;dist=0;group_adults=2;hip_dst=1;hpos=1;room1=A%2CA;sb_price_type=total;srfid=ccd41231d2f37b82d695970f081412152a59586aX1;srpvid=c71751e539ea01ce;type=total;ucfs=1&#hotelTmpl");
              // do your other work here
            }catch(WebDriverException e){
              System.out.println("WebDriverException occured");
              }
            driver.quit();
        }
    }
    
  • Vous pouvez trouver une discussion pertinente dans pageLoadTimeout dans Selenium ne fonctionne pas

Vous pouvez trouver une discussion détaillée dans Avons-nous une fonction générique pour vérifier si la page est complètement chargée dans Selenium


0 commentaires