4

一般的なタスク (ログイン、検索など) のサイトのレンダリング時間を監視する必要があります。IE でのユーザー アクションを模倣し、ページのレンダリングにかかる​​時間を測定できる自動化されたものが必要です。
自動実行の例:

1) ヘッドレス IE ブラウザを開く

2) http://google.comにアクセスします。

3)「スタックオーバーフロー」と入力します

4) 送信ボタンを押す

5) タイマーを開始する

6) 結果ページが完全にレンダリングされるまで待ちます

7) ストップタイマー

8) IEを閉じる

9) 結果の記録

ユーザーがログインせずに、サーバーでスケジュールされたタスクとして実行するには、これが必要です。

私はそうするのに役立つ何かを探してきました。この種のことを経験したことがある人、またはこれを達成できることを知っている人はいますか?

4

4 に答える 4

11

何を重視するか、機能性またはパフォーマンスによって異なります。

機能性

機能を監視するときは、Web アプリケーションがまだ正常に動作していることを自動的に確認することを目的としています。通常、これは継続的な統合プロセスの一部であり、生産監視の一部ではありません。HtmlUnit、Selenium、または WebDriver でうまく実行できます。HttpUnitは推奨されなくなりました (API はより低レベルで、JavaScript はあまりサポートされておらず、あまり広く採用されておらず、バグの修正と機能拡張は少なくなっています)。

HtmlUnitはブラウザーをシミュレートします。そのため、アプリケーションが実際のブラウザーでまったく同じように動作することを確認することはできません。これは、高度な Ajax アプリケーションでは特に重要です。これは、FireFox と Internet Explorer の間のすべての小さな非互換性に匹敵します。長所: ヘッドレスでわかりやすい。短所: 非互換性が検出されないリスク。

Seleniumリモートは、実際のブラウザを制御します。私たちのセットアップでは、特に Internet Explorer では、ヘッドレスで使用できませんでした。しかし、仮想マシンに組み込むと、ヘッドレスで実行されます。パブリック インターネット経由でアプリケーションにアクセスできる場合は、Selenium Grid と、Amazon Elastic Cloud EC2 から事前構成された仮想マシンを使用することもできます。Selenium の長所: 実世界との互換性、簡単なスクリプト作成。短所: 仮想マシンでのみヘッドレス、パフォーマンス オーバーヘッド、より複雑なランタイム セットアップ、クラウドでのみ同時ユーザーのストレス シミュレーション。

バージョン 1.5 までの Selenium は、Selenium Core と呼ばれる JavaScript 部分を使用してブラウザーを制御します。アプリケーションに JavaScript のセキュリティ制限がある場合、Selenium が正しく動作しない可能性があります。

WebDriverは、ブラウザごとに特定のインターフェイスを使用します。たとえば、FireFox の拡張機能や Internet Explorer のオートメーション コントロールなどです。さらに、キーストロークのシミュレーションなどにオペレーティング システムを使用します。これは、Selenium Core よりも強力で、堅牢で、信頼性があります。Selenium バージョン 2.0 以降、WebDriver は Selenium に統合されています。しかし、Selenium 2.0 はまだベータ版です。

パフォーマンス

タイマーでの測定について言及し、レンダリング時間について言及しました。Web アプリケーションのパフォーマンスを監視する場合、応答時間が長すぎるためにアプリケーションを実際に使用できなくなったときにアラートを受け取る必要があります。

このシナリオでは、通常、ミリ秒単位の正確な結果には関心がありません。上記のツールのいずれかを引き続き使用できます。たとえば、Selenium Core を搭載したブラウザーは実際のブラウザーよりも遅くなりますが、これは継続的な監視にはほとんど関係ありません。

どうしても正確な測定が必要な場合は、上記のどれも適切ではありません。クライアント側の期間と、ネットワークとサーバー側の期間を区別する必要があります。

  • HTML のレンダリングと JavaScript の実行には、クライアント側の期間が必要です。同時ユーザー数には依存しません。Firebugなどを使用して、一度測定できます。永続的に監視する必要はありません。

  • 要求をサーバーに転送し、要求を処理し、応答を生成し、応答をクライアントに転送するには、ネットワークとサーバー側の期間が必要です。これらは、ネットワークの使用状況と同時ユーザー数によって異なります。たとえば、JMeterを使用して、それらを正確に測定および監視できます。しかし、洗練された Ajax 機能の場合、JMeter での適切なクライアント リクエストのシミュレーションは複雑なタスクです。JMeter の長所: 正確な測定、多数の同時ユーザーがアプリケーションに負荷をかける可能性。短所: Ajax には制限があり、リクエストの構築に多大な労力がかかります。

于 2011-04-01T19:35:34.647 に答える
3

もう 1 つのオプションは、Selenium Remote Control (またはSelenium一般) です。

于 2011-03-29T18:05:30.903 に答える
1

ヘッドレス オートメーションの 1 つのオプションは、HtmlUnit を使用することです。詳細については、このリンクを参照してください: Using HtmlUnit on .NET for Headless Browser Automation

于 2011-03-29T17:42:35.533 に答える
0

次の PhantomJS 用のヘッドレス IE ポートは、現在ベータ版 (v0.2) です。

http://triflejs.org/

ここに簡単な紹介があります:

ここに画像の説明を入力

API は PhantomJs と同じであるため、最終的には次のことができるようになります。

// 1. Create Page Object and navigate to Google
page = require("webpage").create();
page.open("http://www.google.com", function(status) {
    if ( status === "success" ) {
        // 2. Inject jQuery for DOM operations
        page.includeJs("http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function() {
            // 3. Start Timer
            console.log('Start Timer: ' + (new Date()).getTime());
            // 4. Type string and click search
            page.evaluate(function() {
                $(("input[type=text")[0]).val("stackoverflow");
                $("button:contains('Google Search')).click();
            });
            // 5. Wait for loading and end timer.
            page.onLoadFinished = function() {
               console.log('Load Finished. End Timer:' + (new Date()).getTime());
               phantom.exit();
            };
        });
    }
});
于 2013-09-19T13:00:06.313 に答える