如何衡量网站加载和搜索时间的响应时间?硒

Han*_*a90 7 performance selenium automated-tests selenium-webdriver

我需要使用Selenium和Selenide来测量网站的响应时间.

  • 网站的响应时间:

    我的意思是加载时间,我看到有一种方法可以在打开网站之前和之后的时间之间取差.

    但是这样,会衡量客户端的加载时间,它会依赖于使用过的客户端吗?这样做的最佳方式是什么?

  • 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");
    
    Run Code Online (Sandbox Code Playgroud)

或这个?

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);
Run Code Online (Sandbox Code Playgroud)

最后一种方式如下:

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");
Run Code Online (Sandbox Code Playgroud)
  • 如果我有同一网站的搜索按钮,如果我需要测量搜索时间,该怎么做?它和上面的方式一样吗?

Flo*_* B. 5

您可以使用performance.timingAPI 获取给定页面的与时序相关的性能信息:

// 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;");
Run Code Online (Sandbox Code Playgroud)

文件:

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


Man*_*uli 5

伙计们,您可以使用Selenium 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()
Run Code Online (Sandbox Code Playgroud)


Mob*_*ers 1

网站负载测试始终取决于所使用的客户端。有专门的工具可以测试您的网站加载时间,例如Apache JMeter,但是它不会执行 Javascript 或呈现 HTML 页面(并且这些操作的加载时间非常特定于客户端),它只收集接收请求所需的时间。网站,像你的第二个问题这样的情况可能比 JMeter 更容易在 selenium 中测试,具体取决于搜索的执行方式。

至于你的第二个问题,你将有一个 WebDriverWait 直到找到搜索结果,与你的示例相同。