python - 在真实设备上的 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
如果我们使用真实设备但找不到它,我想会有所不同;你能帮忙吗?
谢谢,
解决方案
我知道这是一个老问题,但我发现一篇文章在 ''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)
推荐阅读
- katalon-studio - Katalon Studio 中的报表修改
- javascript - 使用输入字段将表单转换为 PDF
- azure - 如何部署 Azure Logic App 和先决条件?
- android-ndk - 调用 env->SetStaticIntField(cls, jfid, 0) 方法时如何修复崩溃
- asp.net-core - 当期望修改的对象时,视图在提交时发布了一个空对象
- linux - 文件名操作
- android - 如何连接到设备 BLE?
- c# - 在我的串行通信程序中启用 dtr 时出现问题
- django - 在我的 Django 应用程序中运行 celery beat worker
- ios - 如何在 Xcode 中应用 Deeplab V3 进行实时分割?