测试场景中,若大量使用了Selenium的元素查找[find、finds],整个测试场景的耗时变得比较长,可能会达到手动测试50%的耗时,如何优化?
- 尽量使用find
- 各个用例解耦,使用多开进程的方式来执行
- 用例内部尽量不使用time.sleep硬性等待
以下是find和finds的性能耗时对比:
# coding = utf-8
from selenium import webdriver
import time
_url = 'https://www.baidu.com/'
_xpath = '//input[@value='百度一下']'
def monitor_time(func):
def wrapper(*args, **kwargs):
star_time = time.time()
f = func(*args, **kwargs)
end_time = time.time()
print('%s() runtime:%s ms' % (fn.__name__, 1000 * (end_time - star_time)))
return f
return wrapper
@monitor_time
def test_find():
chrome = webdriver.Chrome()
chrome.get(_url)
e = chrome.find_element_by_xpath(_xpath)
@monitor_time
def test_finds():
chrome = webdriver.Chrome()
chrome.get(_url)
e = chrome.find_elements_by_xpath(_xpath)[0]
run_find() * 100次,取100次耗时的平均数
run_finds() * 100次,取100次耗时的平均数
测试结果:
finds比find 大约多耗时 9%~11%, 在确定性比较高的情况下,尽量用find