【发布时间】:2017-11-21 16:45:22
【问题描述】:
我有一个基本的 python 脚本来测试网站页面速度。基本上它会加载一个页面,检查一个元素是否可见,然后记录这两个事件之间所用的时间。
我用它来检查元素是否可见:
def wait_for_visibility(selector, timeout_seconds=10):
retries = timeout_seconds
while retries:
try:
element = browser.find_element_by_css_selector(selector)
if element is not None:
return element
except:
if retries <= 0:
raise
else:
pass
retries = retries - 1
raise Exception(
"Element %s not visible despite waiting for %s seconds" % (
selector, timeout_seconds)
)
我使用这个顺序:
test_times['page_pre_' + name] = time.time()
browser.get(base + path)
wait_for_visibility(selector=selector_dict[page], timeout_seconds=240)
test_times['page_post_' + name] = time.time()
我的问题是 find_element_by_css_selector 似乎直到页面(更具体地说是它应该查找的元素)已经完成加载几秒钟后才完成并返回。这确实降低了我的脚本作为速度测试的有效性。
有问题的页面非常大,并且是使用 Vue 组件构建的,如果这是导致问题的原因,那么有没有其他方法可以使用 selenium 来查找特定的页面加载事件?
【问题讨论】:
标签: python selenium testing webdriver performance-testing