您的当前位置:首页正文

python+selenium UI自动化测试中,获取当前页面加载的资源,断言指定接口响应时间不能超过10秒

2024-11-29 来源:个人技术集锦

场景

使用selenium做UI自动化测试,点击一个按钮后进入一个页面,该页面会使用一个地图服务,此时很难用页面资源去判断地图有没有加载成功或者加载时长是否太慢。即:要判断进入这个页面后,地图服务加载的接口响应时间不能超过10秒。

解决思路

获取浏览器F12里的Network的数据,筛选出指定的url,获取相应的time做断言。

引入browsermob-proxy,一个浏览器代理,有点像Fiddler。在使用selenium操作元素时,能够知道调用了哪些接口。

实现

安装 browsermob-proxy

2、   pip install  browsermob-proxy   

部分代码如下

import time
from browsermobproxy import Server
from selenium import webdriver


# 开启代理
BMPserver = Server(r'browsermob-proxy-2.1.4/bin/browsermob-proxy.bat') 
BMPserver.start()
BMPproxy = BMPserver.create_proxy()
# 配置chrmodriver
chrome_options = Options()
chrome_options.add_argument('--ignore-certificate-errors')
chrome_options.add_argument('--proxy-server={}'.format(BMPproxy))
driver = webdriver.Chrome(options=chrome_options)
BMPproxy.new_har("video", options={'captureContent': True})

# 打开网址
driver.get(web_Url)

# 点击按钮
driver.find_element_by_xpath('//*[@id="search"]/div/div[2]/button').click()

# 为了能让资源能较为完整的加载,需要添加睡眠时间
time.sleep(10)

# 获取到的Network资源是json格式的,保存到文件中
json_data = BMPproxy.har
        result_json = json.dumps(json_data, indent=4)
        with open(setting.DIR_NAME + "/data/mapResponse.json", "w", errors="igone") as f:
            f.write(result_json)

        entry_data = json_data['log']['entries']

        mapServer_url = '指定的接口url'
        for t in entry_data:
            if re.match(mapServer_url, t['request']['url']) is not None:
                use_time = t['time']
                pytest.assume(use_time < 1000) # 断言这个接口的响应时间不超过10秒

 

显示全文