web-dev-qa-db-ja.com

Selenium WebDriverでブラウザーのキャッシュを自動的にクリアする方法は?

すべてのテスト実行前にブラウザのキャッシュをクリアするにはどうすればよいですか?ドライバーインスタンスを作成した後、setUpメソッドでdriver.manage().deleteAllCookies();を試しましたが、Firefoxで機能していますが、IEは使用できません。解決策はありますか? IE提供してください。

9
user1441341

次のように設定できるドライバ機能があります。

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

IE11ではうまくいきました。

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

12
Flyview

以下のコードを使用してIEのキャッシュをクリアします

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

IEブラウザーは、ページが読み込まれるたびに各要素のキャッシュをクリアします

ieCapabilities.setCapability(InternetExplorerDriver.ENABLE_ELEMENT_CACHE_CLEANUP, true);

これはセッションのクリーンアップを行います:

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

この投稿を使用して 方法:C#でコマンドラインを実行し、STD OUTの結果を取得 、私はこのC#コードを考えてCookieを削除しました(そして副作用としてすべてを削除します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();
}

それはまったくきれいではありませんが、動作します。多分いくつかの部分が削除される可能性があります。 (これを行うためのより良い方法を見つけたら私に知らせてください)。

1
craastad

Javaを使用すると、それを実現できます。

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()

キャッシュを削除する場合テストを開始する前に、ブラウザまたはアプリケーションのキャッシュをクリアする1つのbatファイルを作成できます。 batファイルを作成したら、テストを開始する前にコードを呼び出します。

0
Rajesh