16

設計上、Selenium は新しいテストが実行されるたびに Firefox プロファイルの新しいコピーを作成します。このコピー時間は、特に何百ものテストを実行する場合に、かなりのボトルネックになることがわかりました。(プロファイルを新たにコピーするのに 5 ~ 15 秒)。

これに対するオーバーライド動作を知っている人はいますか? Selenium サーバーで同じ Firefox プロファイルを再利用することをお勧めします。これが「テスト フィクスチャをきれいにセットアップする」という哲学に違反していることはわかっていますが、将来のテストを危険にさらすほど、私のテストが私の Firefox プロファイルを大幅に変更することはないので、これは私が喜んで取る近道です。

4

5 に答える 5

8

これは問題だと思います。Firefox プロセスの新しいコピーを毎回作成するのは良いことですが、Firefox プロファイルを再生成して起動時間を 2 倍にするのは少しやり過ぎです。http://jira.openqa.orgでバグ レポートを開き、patrick@browsermob.com にメールを送っていただければ、解決策を確実に提供できるようにいたします。

PS: 私はこの問題を 1 回限りで解決しました。同じ Firefox プロファイルを使用し、キャッシュと Cookie DB を削除します。しかし、私は本当にその変更を Selenium ソースにパッチを適用する必要があります。

于 2009-04-07T13:08:09.133 に答える
6

以下のコードをテスト セットアップの外に移動し、フィクスチャ セットアップに移動し、セレン インスタンスのグローバルを維持するだけです (コードは NUnit を想定しています)。

[TestFixtureSetUp()]
public void FixtureSetup()
{
    selenium = New DefaultSelenium("localhost", 4444, "*firefox", "http://localhost/");
    selenium.Start();
    selenium.SetTimeout("30000");
    selenium.Open("/");
}

テスト セットアップは次のようになります。

[SetUp()]
public void SetUpTest()
{
    selenium.Open("default.aspx");
    selenium.WaitForPageToLoad("30000");
}
于 2009-04-03T17:20:59.980 に答える
1

プロファイルの読み込み時間を短縮する小さな方法の 1 つは、大きなファイルを Firefox プロファイルから削除することです。これを行うには、コマンド firefox.exe -p を実行して独自のプロファイルを設定します。プロファイルが作成されたら、オプションに移動し、Web テストに必要のないキャッシュやその他の毛羽立ちをオフにします。次に、プロファイルを新しい場所にコピーし、不要な sql ファイルを削除します。(そうしないと、再度開くと、削除されたファイルが復元され、プロファイルが非常に小さく保たれます)。Selenium テストを開始するときは、新しい場所でプロファイルを参照してください。これまでは、テストの開始ごとに 50MB 以上のプロファイルをコピーしていましたが、現在は 3 ~ 4MB のプロファイルをコピーしており、起動時間はほぼ瞬時です。

繰り返しますが、これは同じプロファイルを再度使用する方法ではありませんが、各プロファイルのコピー時間を短縮します.

于 2014-02-14T21:45:12.777 に答える
0

今では古い質問ですが!! Selenium サーバーまたは RC は古くなっていますが、同じ問題が Selenium Webdriver で解決されていません。webdriver を介して firefox を起動するのに約 30 秒かかります。

しかし、ここで説明したように、一部の人々はこの「未使用のネットワーク アダプタを無効にした後 (コントロール パネル\ネットワークとインターネット\ネットワーク接続にあります)」を回避しました。

ポイントで立ち往生していました:

ExtensionConnection connection = connectTo(exe.binary, profileToUse, "localhost");

https://groups.google.com/forum/#!topic/selenium-users/a2fNfF-mD_E

それは私にはうまくいきませんでしたが、確かに試してみたいと思うかもしれません!!

別の方法は次のとおりです。

FirefoxProfile profile = new FirefoxProfile();
FirefoxBinary binary = new FirefoxBinary(@"path\to\firefox.exe");
FirefoxDriver driver = new FirefoxDriver(binary,profile);
于 2013-10-07T07:03:44.177 に答える
0

MSTest を使用して、次のようにin (and )Firefoxを初期化することで、テストごとに新しいウィンドウを開いたり閉じたりするのではなく、すべてのテストで1 つのウィンドウのみを開くようにドライバーを取得できました。WebDriverClassInitializeCleanupTestInitialize

static string path;
        static IWebDriver driver;
        static string baseURL;

        [ClassInitialize]
        public static void ClassInitialize(TestContext context) {
            DirectoryInfo di = new DirectoryInfo(Directory.GetCurrentDirectory());
            path = Path.Combine(di.Parent.Parent.Parent.FullName, "Tests\\bin\\debug\\");
            driver = new FirefoxDriver();
            baseURL = "http://localhost:5555/";
        }

        [ClassCleanup]
        public static void ClassCleanup() {
            driver.Quit();
        }
于 2012-07-10T15:52:04.840 に答える