4

FirefoxのWebドライバーを使用しています。すべてのCookieとキャッシュファイルをカスタムディレクトリに保存したいと思います。しかし、それは私のディレクトリの代わりに一時ディレクトリを取ります。これが私のコードです:

FirefoxProfile firefoxProfile = new FirefoxProfile(path, false);
MessageBox.Show(firefoxProfile.ProfileDirectory);     //Its showing blank
driver = new FirefoxDriver(firefoxProfile);
MessageBox.Show(firefoxProfile.ProfileDirectory);    //Its showing the temp dir
                                                     //not my custom dir

ディレクトリを取得して、そこにすべてのCookieとファイルを保存する方法を教えてください。

ありがとう。

編集:

セレンプロファイルディレクトリを修正する必要があります(常に変更されているため)。以前のCookieとキャッシュファイルを使用できるようにします。それを達成するためのアイデアや代替方法を教えていただけますか?

4

3 に答える 3

0

Firefox を使用することは絶対に必要ですか? IEを使っているなら、これは気になりませんか?Selenium jar ヘルプ コンテンツから

-ensureCleanSession: ブラウザーにユーザー プロファイルがない場合は、すべての新しいセッションに以前のセッションからのアーティファクトがないことを確認します。たとえば、このオプションを有効にすると、IE を起動する前にすべてのユーザー Cookie がアーカイブされ、IE を閉じた後に復元されます。

したがって、 IE でテストを実行しているときにそのオプションを使用しない場合、Cookie は残ります。Webdriver で試したことはありませんが、Selenium 1 の使用中に Cookie が保持されているのを見ました。

于 2012-04-30T03:06:39.013 に答える
0

FirefoxProfile.ProfileDirectory生成されたプロファイル ディレクトリを参照します (明らかに、ブラウザ インスタンスの作成後にのみ利用可能です)。
Selenium ソース コードによると、プロファイル ディレクトリは一時フォルダー内のランダムなディレクトリとして生成されるため、変更できませんでした。

// creates a random folder name in Path.GetTempPath()
this.profileDir = GenerateProfileDirectoryName(); 

public string ProfileDirectory
{
    get
    {
        return this.profileDir;
    }
}

一方、作成profileDirectory時に指定したFirefoxProfileは user.js のロードに使用されます。

mozillaZineからの引用:

user.js ファイルは、設定を変更する代替方法であり、上級ユーザーのみに推奨されます。

更新。 私が見ることができるあなたの問題を解決する唯一の方法は、セレンソースを掘り下げる以外に、一時フォルダーの場所を目的のフォルダーに変更してから、現在のユーザーの元の値に戻すことです。

Upd2。 別の可能な解決策 (まだ試していませんが) はProfileDirectory、以前の webdriver の実行から、webdriverの別のインスタンスのprofileDirectory新しいインスタンスを指定することです。FirefoxProfileからのすべてのファイルprofileDirectoryが生成された一時フォルダーにコピーされると、目的の機能を実現するのに役立ちます。

于 2012-04-29T21:26:25.687 に答える
0

ドライバーを作成した後、システムコマンドを使用してファイルをこのフォルダーにコピーします。次に、それらにアクセスできますが、これは少しハックですが、機能するはずです(ここで重要なことを見逃していない限り、私が持っていると感じているかもしれません:))

于 2012-04-29T22:03:45.193 に答える