【问题标题】:Page Load Time With Selenium WebDriverSelenium WebDriver 的页面加载时间
【发布时间】:2020-08-02 21:58:11
【问题描述】:

我们正在尝试使用 Selenium WebDriver 查找网站的页面加载时间。我们想获取网站中多个屏幕/页面的页面加载时间,比如登录和登录后,主屏幕等等。

我们的 driver.get() 调用用于登录 URL,

driver.get("https://<website root>/login")

我正在尝试这段代码两次,第一次是在加载登录页面时,然后在单击登录按钮以加载主页后再次尝试。

long pageLoadTime = (Long) driver.executeScript("return (window.performance.timing.loadEventEnd-window.performance.timing.responseStart)" ); 

两次我们得到相同的 pageLoadTime。 window.performance 对象是否从不刷新?我明白发生了什么。我们如何获得测试流程中不同屏幕的加载时间。

【问题讨论】:

  • 你是从一个方法调用它还是只在同一行写了两次?
  • 同一行写在两个不同的地方,登录页面加载后一次,主页加载时再次
  • 被测应用程序是否可能使用 Angular 或 React 框架?登录到不同的 URL 后浏览器窗口是否重新加载,或者即使登录后窗口 URL 也保持不变?
  • URL 路径保持不变,但片段发生了变化
  • 这可能是这里的问题。根据浏览器,页面加载已完成,但应用程序继续在同一页面内使用 AJAX 加载页面元素。因此,当您查询加载时间时,它会返回相同的数字。对于您的应用程序,Selenium 可能不是衡量性能的正确工具。如果可能,请尝试使用 LoadNinja/JMeter/LoadRunner。

标签: selenium webdriver performance-testing page-load-time


【解决方案1】:
from selenium import webdriver
import time

driver = webdriver.Chrome()

startTime = time.time()

driver.get("https://google.com/")
#Your element
inputElem = driver.find_element_by_xpath('//*[@id="tsf"]/div[2]/div[1]/div[1]/div/div[2]/input')
#implicitly_wait means, wait until the element is found
driver.implicitly_wait(10)
finishTime = time.time()

print(finishTime-startTime)

这行得通。从网站中选择一个元素并等待元素加载。

【讨论】:

    【解决方案2】:

    在执行任何操作之前尝试刷新当前页面一次。 driver.navigate().refresh();

    这应该可以解决您的问题。

    【讨论】:

    • 请在您的回答中提供更多详细信息。正如目前所写的那样,很难理解您的解决方案。
    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-09-30
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    相关资源
    最近更新 更多