首页 > 解决方案 > 在真实设备上的 Python 脚本上使用 Selenium 测量页面加载速度

问题描述

我正在尝试使用 Selenium 和 Python 脚本来测量网页加载速度。如果以下驱动程序是本地的 firefox 或 chrome(ubuntu 16.04),那么看起来就像一个魅力,但如果我使用 webdriver.Remote 那么性能响应不起作用。

from selenium import webdriver
desired_caps = {}
desired_caps['platformName'] = 'Android'
desired_caps['deviceName'] = 't03g'
desired_caps['appPackage'] = 'com.android.chrome'
desired_caps['appActivity'] = 'com.google.android.apps.chrome.Main'
driver = webdriver.Remote('http://192.168.1.40:4723/wd/hub', desired_caps)
driver.get('https://www.bbc.com/')

responseStart = driver.execute_script("return window.performance.timing.responseStart")
domComplete = driver.execute_script("return window.performance.timing.domComplete")
frontendPerformance_calc = float(domComplete - responseStart) / 1000

print(frontendPerformance_calc)

driver.quit()

运行的输出是这样的:

Traceback (most recent call last):
  File "rasha.py", line 10, in <module>
    responseStart = driver.execute_script("return window.performance.timing.responseStart")
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 636, in execute_script
    'args': converted_args})['value']
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
    self.error_handler.check_response(response)
  File "/usr/local/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Method is not implemented

如果我们使用真实设备但找不到它,我想会有所不同;你能帮忙吗?

谢谢,

标签: pythonseleniumselenium-webdriver

解决方案


我知道这是一个老问题,但我发现一篇文章在 ''response start'' 和 ''dom Complete'' 之前有 ''Navigation Start'' https://www.lambdatest.com/blog/how-to-用硒测量页面加载时间/

在 windows chrome 上,它对我来说是这样的:

options = webdriver.ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-logging'])
driver = webdriver.Chrome(options=options)
driver.get('https://www.google.com')
driver.maximize_window()

#! Use Navigation Timing  API to calculate the timings that matter the most
navigationStart = driver.execute_script("return window.performance.timing.navigationStart")
responseStart = driver.execute_script("return window.performance.timing.responseStart")
domComplete = driver.execute_script("return window.performance.timing.domComplete")

#! Calculate the performance
backendPerformance_calc = responseStart - navigationStart
frontendPerformance_calc = domComplete - responseStart

print("Back End: %s" % backendPerformance_calc)
print("Front End: %s" % frontendPerformance_calc)

推荐阅读