1

50から100のURLを一度開いて、各URLのログインを確認する必要があります。すべてのURLは同じアプリに属していますが、異なる顧客向けにホストされていますか?Selenium WebDriverを使用して、複数のブラウザー、たとえば異なるURLの20〜50のブラウザーを開くにはどうすればよいですか?Parallel属性を「Tests」に設定して@BeforeTestでドライバーオブジェクトをインスタンス化してTestNGを試しましたが、2つのブラウザーを開いた後、ブラウザーが閉じた、または3番目のブラウザーで停止したためにセレン例外が発生しました。

以下にこのためのコードを見つけます。

@Test
@Parameters({ "url" })
public void testParallel(String url) throws Exception {

    try {
        driver.get(url);

        int i = 0;
        i++;
        System.out.println("Browser Count" + i);

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
4

3 に答える 3

3

Javaバインディングを使用して、同じマシン上で複数のIEDriverインスタンスを並行して使用することはできないと思います。(どこかで読むことを忘れないでください。..NETバインディングは並列IEインスタンスをサポートします)

IEDriverの公式ドキュメントによると、「他のWebDriverクラスとは異なり、一部の言語バインディングでは一度に1つのInternetExplorerDriverインスタンスのみが存在する必要があります。一度に複数のInternetExplorerDriverインスタンスを実行する必要がある場合は、RemoteWebDriverの使用を検討してください。および仮想マシン。」ここを参照してください。

testng xmlが正しい場合、これはFirefoxDriverで機能するはずです。または、IEで必要な場合は、グリッドを設定し、異なるマシンでIEノードを起動して、並列実行を実行できるようにすることを検討する必要があります。

于 2012-05-27T13:45:36.433 に答える
0

このようなテストでは、ブラウザー自体を使用するのではなく、代わりにHTMLUnitドライバー(ヘッドレスブラウザーのようなもの)を使用することをお勧めします。また、GhostDriverと呼ばれるものもあります。それでも、おそらくリモートグリッドノード+ハブを使用する必要がありますが、目標を達成するために使用する必要はありません。

Seleniumは、その点で負荷テストを実行できます。また、TestNGは使用しません。代わりに、GradleまたはMavenを使用します。これは、それら自体にJUnitフォークマルチスレッド機能があるためです。GradleまたはMavenで、特定のテストクラスをフィルタリングして識別するタスクを作成し、プロセスをフォークしてマルチスレッドで実行します。 ここで例を作成しました。

于 2013-02-27T23:09:43.553 に答える
0

なぜ一度にすべて開く必要があるのですか?Selenium は負荷テスト用に設計されていません。アプリケーションまたはサーバーが負荷の下でどのように動作しているかを確認したい場合は、JMeterを確認してください。

于 2012-05-27T10:46:17.897 に答える