3

しばらくの間、FirefoxDriverを使用してWebDriver2.25.0に基づく一連の自動テストを実行してきました。テストは、Maven 3.0ベースのビルドとそのFailSafeプラグインによって並行して実行されます(クアッドコアマシンではコアごとに2スレッド)。すべてのテストには、FirefoxDriverのインスタンスを取得し、すべてのCookieをクリアする@BeforeClassメソッドがあります。これはすべて正常に機能しています。

プロキシ認証が変更されたため(以前はありませんでした)、特定のFirefoxプロファイルを使用してテストを実行する必要があります。プロファイルが作成され、ビルドに-Dwebdriver.firefox.profile=環境変数が含まれるようになりました。「プロファイルが見つかりません」というエラーが発生していないため、プロファイルが取得されているようです。ただし、すべてのFirefoxインスタンスがプロファイルの同じコピーを使用しているため、同じCookieストアを共有しているようです。アプリケーションはユーザーの最初のアクセス時にリージョン選択ダイアログを提供する必要がありますが、これらのテストの実行時には提供されません。

更新:-Dwebdriver.firefox.profile変数を使用せずに実行し、新しいFirefoxDriver(new ProfilesIni()。getProfile( "<profileName>"))を使用した場合の動作は同じです。

FirefoxDriverは、指定されたプロファイルのコピーを作成し、その分離されたコピーを使用して各Firefoxインスタンスを実行していませんか?

ありがとう!

4

1 に答える 1

0
  • インスタンス化中にプロファイルを提供しない場合FirefoxDriver、コードを実行すると、たとえば.new FirefoxDriver(...)C:\Users\#TheUser\AppData\Local\Tempanonymous1864251113973276405webdriver-profile
  • のプロファイルを指定した場合FirefoxDriver、動作は同じですが、プロファイルのコピーに名前が付けられる点が異なります (例: userprofile6938771758695790613copy.

結論として、Webdriver は、Temp使用する必要があるカスタム プロファイルを指定するかどうかにかかわらず、常にこのフォルダー内にプロファイルのコピーを作成します。Cookie に関しては、作成されたすべてのプロファイルにcookies.sqliteinside という名前のファイルがあります。Cookie がなんらかの方法で干渉するかどうかは 100% わかりませんが、そうすべきではありません。以下を使用して、すべての Web ドライバーに保存されている Cookie を比較することで確認できます。

 Set<Cookie> webDriverCookies = webDriver.manage().getCookies();
于 2012-11-01T15:08:37.263 に答える