188 votes

Rafraîchissement d'une page Web par WebDriver lors de l'attente d'une condition spécifique

Je cherche un moyen plus élégant de rafraîchir la page web pendant les tests (j'utilise Selenium2). J'envoie simplement la touche F5 mais je me demande si le pilote a une méthode pour rafraîchir toute la page web. Voici mon code

    while(driver.findElements(By.xpath("//*[text() = 'READY']")).size() == 0 )
        driver.findElement(By.xpath("//body")).sendKeys(Keys.F5);
        //element appear after text READY is presented      
    driver.findElement(By.cssSelector("div.column a")).click();    

Il existe peut-être une meilleure solution pour trouver un élément sur une page rafraîchie manuellement.

343voto

Manpreet Singh Points 803

En Java ou en JavaScript :

driver.navigate().refresh();

Cela devrait rafraîchir la page.

0 votes

Content que cela vous ait aidé. Si vous utilisez uniquement selenium RC ou un WebDriverBackedSelenium, vous pouvez également utiliser : selenium.refresh() ;

60 votes

Ce n'est pas exactement l'équivalent d'appuyer sur F5. driver.navigate().refresh() dans son en-tête de requête indique "no-cache" et, par conséquent, recharge inconditionnellement tout le contenu. Alors qu'en appuyant sur F5, on pourrait obtenir une requête "If-Modified-Since", qui pourrait donner lieu à une réponse "304 Not Modified". Vous devez garder cette différence à l'esprit si vous effectuez des tests de charge.

0 votes

@Manpreet Merci pour Solution. Elle mérite un Upvote.

94voto

Isaac Points 1268

En Python, il existe une méthode pour faire cela : driver.refresh() . Il se peut que ce ne soit pas le cas en Java.

Vous pouvez également driver.get("http://foo.bar"); Bien que je pense que la méthode d'actualisation devrait fonctionner parfaitement.

6 votes

Si vous utilisez driver.get("http://foo.bar") On pourrait tout aussi bien se contenter d'utiliser driver.get(driver.current_url)

73voto

En python

Utiliser la méthode intégrée

driver.refresh()

ou, en exécutant JavaScript

driver.execute_script("location.reload()")

0 votes

Comment rafraîchir les pages modales ?

8voto

Prashanth Sams Points 959

Alternatif pour Rafraîchissement de la page (F5)

driver.navigate().refresh();

(ou)

Actions actions = new Actions(driver);
actions.keyDown(Keys.CONTROL).sendKeys(Keys.F5).perform();

2voto

Stas S Points 80

Il peut également arriver que vous souhaitiez rafraîchir uniquement une iframe spécifique de la page et non la page entière.

La procédure à suivre est la suivante :

public void refreshIFrameByJavaScriptExecutor(String iFrameId){
        String script= "document.getElementById('" + iFrameId+ "').src = " + "document.getElementById('" + iFrameId+ "').src";
       ((IJavaScriptExecutor)WebDriver).ExecuteScript(script);
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X