web-dev-qa-db-fra.com

Comment effacer automatiquement le cache du navigateur dans Selenium WebDriver?

Comment effacer le cache du navigateur avant chaque test? J'ai essayé avec driver.manage().deleteAllCookies(); dans la méthode setUp après la création de l'instance de pilote, cela fonctionne pour firefox, mais pour IE aucune utilisation. Y at-il une solution pour IE s'il vous plaît me fournir ..

9
user1441341

Il existe une fonctionnalité de pilote que vous pouvez définir comme suit:

DesiredCapabilities capabilities = DesiredCapabilities.internetExplorer();
capabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);

Cela a fonctionné pour moi sur IE11.

Source: http://Selenium.googlecode.com/git/docs/api/Java/org/openqa/Selenium/ie/InternetExplorerDriver.html

12
Flyview

Utilisez le code ci-dessous pour vider le cache dans IE

try {
    Runtime.getRuntime().exec("RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255");
} catch (IOException e) {
    e.printStackTrace();
}
3
praneel

Le navigateur IE efface le cache de chaque élément après chaque chargement de page 

ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);

Cela fera le nettoyage de la session:

ieCapabilities.setCapability(InternetExplorerDriver.IE_ENSURE_CLEAN_SESSION, true);
1
Avinash G V

En utilisant ce post, Comment: exécuter la ligne de commande en C #, obtenir les résultats STD OUT , je suis arrivé avec ce code C # pour supprimer les cookies (et comme effet secondaire, il supprime toutes les données du navigateur IE).

public static void DeleteIECookiesAndData()
{
    Process p = new Process();
    p.StartInfo.UseShellExecute = false;
    p.StartInfo.RedirectStandardOutput = true;
    p.StartInfo.FileName = "RunDll32.exe";
    p.StartInfo.Arguments = "InetCpl.cpl,ClearMyTracksByProcess 2";
    p.Start();
    p.StandardOutput.ReadToEnd();
    p.WaitForExit();
}

Ce n'est pas beau du tout, mais ça marche. Peut-être que certaines pièces pourraient être enlevées. (s'il vous plaît laissez-moi savoir si vous trouvez un meilleur moyen de le faire).

1
craastad

En utilisant Java, vous pouvez réaliser cela:

protected void deleteCookie(String cookieName) {    
    String cookieDomain = CTPropertiesManager.getProperty("site.properties", "site.cookie.domain");
    try {
        //get all cookies
        Cookie cookies[] = request.getCookies();
        Cookie ctCookie=null;
        if (cookies !=null) {
            for(int i=0; i<cookies.length; i++) {
                ctCookie=cookies[i];
                if (ctCookie.getName().trim().equals(cookieName)) {
                    if ( cookieDomain != null ) {
                        ctCookie.setDomain(cookieDomain);
                    }
                    ctCookie.setPath("/ct");
                    ctCookie.setMaxAge(0);
                    response.addCookie(ctCookie);    
                }
            } //end for
        }//end if cookie
    } catch(Exception e) {
        CTLogManager.log(e);
    }
}//end deleteCookie()

Pour supprimer le cacheVous pouvez créer un fichier bat qui efface le cache de votre navigateur ou de vos applications avant le début du test. après avoir créé le fichier chauve-souris, appelez simplement votre code avant le début du test.

0
Rajesh