web-dev-qa-db-ja.com

SeleniumがWebドライバーを使用して一時的なFirefoxプロファイルを作成しないようにする方法は?

JavaでSelenium Web Driver APIを使用しています。テストケースをデバッグするたびに、Firefoxの一時プロファイルが一時ファイルディレクトリに作成されます。これは2つの点で頭痛の種です。

  1. 間違いなく、プロファイルを作成するのに不必要な時間を費やし、不必要なスペースを取っています。
  2. 次回テストケースを起動するときに使用できるアドオンをインストールできません。

これを回避するにはどうすればよいですか?

52

Firefoxドライバーがプロファイルを選択する方法を制御できます。をセットする webdriver.firefox.profileプロパティを使用するプロファイルの名前に。ほとんどの人は、これは悪い考えだと思います。なぜなら、すべてのCookie、キャッシュの内容、etcを継承するからです。プロファイルの以前の使用法の、しかしあなたが本当にそれをしたいなら、それは許されます。

例えば:

System.setProperty("webdriver.firefox.profile", "MySeleniumProfile");
WebDriver driver = new FirefoxDriver(...);

[〜#〜] update [〜#〜]-From Ranhir

Javaでの処理方法

FirefoxProfile profile = new FirefoxProfile(new File("D:\\Selenium Profile"));                  
WebDriver driver = new FirefoxDriver(profile);

次に、Firefoxの設定を変更して、終了時にすべてのCookieとキャッシュをクリアしました。 こちら をご覧ください。

31
Ross Patterson

必ず電話してください

driver.quit();

の代わりに

driver.close();

close()は一時ファイルを削除しません

22
Szabolcs Filep

この質問 私がドキュメントを見つけたところ、答えは実際にはかなり簡単でした。 FirefoxProfile クラスが見つかり、コンストラクターがFirefoxプロファイルへのパスを取りました。

WebDriver driver = null;
FirefoxProfile profile = new FirefoxProfile(new File("C:\\Users\\Ranhiru\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\qp1nizdo.Selenium"));
driver = new FirefoxDriver(profile);

-pフラグを付けて "Firefox.exe"を実行して、新しいプロファイルを作成しました。

Firefox.exe -p

このプロファイルに必要な拡張機能をインストールしました。 :)

更新

プロファイルを割り当てるかどうかは関係ありませんが、一時フォルダー内の一時プロファイルは作成されます。プロファイルを作成して割り当てることにより、テスト時にfirebug/xpather /お気に入りの拡張機能を使用する機会が得られます。

3

FirefoxWebDriverクラスのaddExtension(File)メソッドを呼び出すことにより、目的のプラグインでFirefoxProfileをロードできます。

例:

try {
    File firebug = new File("C:\\FFPlugins\\firebug-1.7.3.xpi");
    File xpathChecker = new File("C:\\FFPlugins\\xpath_checker-0.4.4-fx.xpi");
    profile.addExtension(firebug);
    profile.setPreference("extensions.firebug.currentVersion", "1.7.3");
    profile.addExtension(xpathChecker);
    profile.setPreference("extensions.xpath_checker.currentVersion", "0.4.4");
} catch(IOException e) {
    e.printStackTrace();
}
driver = new FirefoxDriver(profile);
3

次のコマンドを実行してカスタムプロファイルを作成しました。

firefox -profileManager 

(必要な例外などを追加します-例外が失われるたびにSeleniumがクリーンなプロファイル/インスタンスを開くため)

次に、以下を使用して、このプロファイルでFirefoxを直接作成していました。

private static String profilePath = "C:\\fitnesse\\Selenesse\\FFProfiles";
private static FirefoxProfile ffprofile = new FirefoxProfile(profilePath); 
private static IWebDriver driver = new FirefoxDriver(ffprofile);
1
Woodman81

defaultという名前のプロファイルを常に使用できます。これは、ユーザーがデフォルトで使用するプロファイルです。そこには、すべてのCookie、プラグインなどがあり、合併症なく使用できます。

System.setProperty("webdriver.firefox.profile", "default");

webDriverを作成する前に

WebDriver driver = new FirefoxDriver();

新しいプロファイルを作成するには、シェルで実行できますfirefox -p表示されます

Add new profile to Firefox

既存のdefaultに加えて新しいプロファイルを取得します。それはあなたにあなたが望むすべての自由を与えます。

0
EliuX

明示的に指定した場合でも、Seleniumが一時ファイルを作成するのを止めることはできません。ただし、テストが完了したらクリアできます。

TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()

MacOSおよびUbuntuでテスト済み。

0
Max
  1. Firefoxを起動するには:firefox -P
  2. 新しいプロファイル(webdriver1など)を作成し、必要なプラグインなどを追加します。
  3. テストケースに追加します。

    DesiredCapabilities desiredCapabilities =
        new DesiredCapabilities("firefox", "", Platform.ANY);
    FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1");
    desiredCapabilities.setCapability("firefox_profile", profile);
    WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);
    
0
jnr