JavaでSelenium Web Driver APIを使用しています。テストケースをデバッグするたびに、Firefoxの一時プロファイルが一時ファイルディレクトリに作成されます。これは2つの点で頭痛の種です。
これを回避するにはどうすればよいですか?
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とキャッシュをクリアしました。 こちら をご覧ください。
必ず電話してください
driver.quit();
の代わりに
driver.close();
close()は一時ファイルを削除しません
この質問 私がドキュメントを見つけたところ、答えは実際にはかなり簡単でした。 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 /お気に入りの拡張機能を使用する機会が得られます。
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);
次のコマンドを実行してカスタムプロファイルを作成しました。
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);
default
という名前のプロファイルを常に使用できます。これは、ユーザーがデフォルトで使用するプロファイルです。そこには、すべてのCookie、プラグインなどがあり、合併症なく使用できます。
System.setProperty("webdriver.firefox.profile", "default");
webDriverを作成する前に
WebDriver driver = new FirefoxDriver();
新しいプロファイルを作成するには、シェルで実行できますfirefox -p
表示されます
既存のdefault
に加えて新しいプロファイルを取得します。それはあなたにあなたが望むすべての自由を与えます。
明示的に指定した場合でも、Seleniumが一時ファイルを作成するのを止めることはできません。ただし、テストが完了したらクリアできます。
TemporaryFilesystem.getDefaultTmpFS().deleteTemporaryFiles()
MacOSおよびUbuntuでテスト済み。
テストケースに追加します。
DesiredCapabilities desiredCapabilities = new DesiredCapabilities("firefox", "", Platform.ANY); FirefoxProfile profile = new ProfilesIni().getProfile("webdriver1"); desiredCapabilities.setCapability("firefox_profile", profile); WebDriver webdriver = new RemoteWebDriver(desiredCapabilities);