web-dev-qa-db-ja.com

Webサイトの読み込み時間と検索時間の両方の応答時間を測定する方法セレン

セレンとセレン化物を使用してWebサイトの応答時間を測定する必要があります。

  • ウェブサイトの応答時間:

    読み込み時間ということですが、ウェブサイトを開く前と開いた後の時間に差をつける方法があることがわかります。

    しかし、この方法では、クライアントの読み込み時間を測定しますが、使用するクライアントによって異なりますか?そのための最良の方法は何ですか?

  • long startTime = System.currentTimeMillis();
    
    driver.get("http://zyxware.com");
    new WebDriverWait(driver, 10).until(ExpectedConditions.presenceOfElementLocated(By.id("Calculate")));
    
    long endTime = System.currentTimeMillis();
    long totalTime = endTime - startTime;
    
    System.out.println("Total Page Load Time: " + totalTime + "milliseconds");
    

それともこれ?

driver.get("url");
        WebElement ele = $(By.tagName("body"));
        // get the  page load time
        Long loadtime = (Long)((JavascriptExecutor)driver).executeScript(
            "return performance.timing.loadEventEnd - performance.timing.navigationStart;");        
        System.out.println(loadtime);

そして最後の方法は次のとおりです:

StopWatch pageLoad = new StopWatch();
            pageLoad.start();
            //Open your web app (In my case, I opened facebook)
            driver.get("url");
            // Wait for the required any element (I am waiting for Login button in fb)
            WebDriverWait wait = new WebDriverWait(driver, 10);
            wait.until(ExpectedConditions.presenceOfElementLocated(By.tagName("body")));

            pageLoad.stop();
            //Get the time
            long pageLoadTime_ms = pageLoad.getTime();
            long pageLoadTime_Seconds = pageLoadTime_ms / 1000;
            System.out.println("Total Page Load Time: " + pageLoadTime_ms + " milliseconds");
  • 同じWebサイトの検索ボタンがある場合、検索時間を測定する必要がある場合、どうすればよいですか?上記と同じですか?
9
Hana90

皆さん、Selenium Webドライバーを使用して、Webページに関するタイミングデータを収集できます。

from Selenium import webdriver

source = "http://www.example.com/"
driver = webdriver.Chrome()
driver.get(source)

navigationStart = driver.execute_script("returnwindow.performance.timing.navigationStart")
responseStart = driver.execute_script("return window.performance.timing.responseStart")
domComplete = driver.execute_script("return window.performance.timing.domComplete")

backendPerformance = responseStart - navigationStart
frontendPerformance = domComplete - responseStart

print "Back End: %s" % backendPerformance
print "Front End: %s" % frontendPerformance

driver.quit()
5

performance.timing AP​​Iを使用して、特定のページのタイミング関連のパフォーマンス情報を取得できます。

// launch the browser
WebDriver driver = new FirefoxDriver();

// visit a page
driver.get("http://stackoverflow.com");

// get the  page load time
Long loadtime = (Long)((JavascriptExecutor)driver).executeScript(
    "return performance.timing.loadEventEnd - performance.timing.navigationStart;");

文書:

https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming

5
Florent B.

質問には2つの部分があります。

  1. フロントエンドの観点から見たページ読み込み時間。
  2. E2Eの観点からの検索機能のロード時間。

これらの各ケースのアプローチは少し異なります。


最初のケースでは。指定された2番目と3番目の方法(JavaScriptとJavaを使用する方法)を使用できます。ただし、正しく言及されているように、クライアントごとに異なります。ページの読み込みはブラウザのレンダリングエンジンに完全に依存しているため、ブラウザごとに異なる値が表示されます。

また、ロード時間が10秒を超える場合は、WebDriverWaitメソッドでタイムアウトを10に指定しているため、絶対値を識別できない場合があります。

最初のアプローチでは、ページ内の特定のコンポーネントを待機しているため、必要なものが提供されない場合があります。最近のブラウザーは段階的にレンダリングし、ページ全体の読み込みを開始する前に応答全体が届くのを待たないため、これは正しい方法ではない可能性があります。


2番目のケースでは、同じアプローチを少し調整して、E2Eの観点から検索機能のロード時間を取得できます(最初のケースで考慮されたすべてのバリエーションを含みます)。


より具体的で正確な詳細を提供する他のツールを探している場合は、[〜#〜] yslow [〜#〜]およびWebPageTest。 YSLOWはPhantom JSと統合されており、プロセスの自動化に役立ちます。WebPageTestには、自動化に利用できるAPIがあります。

WebPageTest参照リンク:https://sites.google.com/a/webpagetest.org/docs/advanced-features/webpagetest- restful-apis

YSLOWリファレンスリンク:http://yslow.org/phantomjs/

2

セレンはこれを行うためのより良い方法を提供していません。あなたがそれを使用している方法は、私が知る限り可能な限り最良の方法です。検索方法については、ページの読み込みに使用したのと同じ方法を使用できます。ただし、開始時間と停止時間の間にいくつかの異なるアクションを実行することになります。

また、あなたの質問に答えると思いますので、この質問もご覧ください。 Selenium WebDriverを使用してページをロードする正確な時間をどのように取得できますか?

2
RemcoW

Webサイトの負荷テストは常に、使用するクライアントに依存します。 Apache JMeter など、ウェブサイトの読み込み時間をテストするための特別なツールがありますが、JavaScriptを実行したりHTMLページをレンダリングしたりすることはありません(これらのアクションの読み込み時間はクライアント固有です)。 Webサイトの受信にかかる時間、および2番目の質問のようなケースは、検索の実行方法によっては、JMeterよりもSeleniumでテストする方が簡単な場合があります。

2番目の質問については、例と同じように、検索結果が見つかるまでWebDriverWaitが存在します。

1
Mobrockers
function abc(){
    var start = window.performance.now();
      //Perform task 
    var end = window.performance.now();
    console.log('start = ',start,' ','end = ',end);
}
0
vijay sadhu