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

场景

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

解决思路

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

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

实现

安装 browsermob-proxy

1、下载browsermob-proxy到本地,然后解压(我是解压到项目目录下,方便使用)
链接:https://github.com/lightbody/browsermob-proxy/releases/tag/browsermob-proxy-2.1.4

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秒

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是基于 PythonSelenium 和 unittest 的 UI 自动化测试框架搭建步骤: 1. 安装 PythonSelenium 在开始前,需要确保你的电脑上安装了 PythonSelenium。你可以在 Python 官网下 Python 并安装,安装完成后,在命令行输入以下命令安装 Selenium: ``` pip install selenium ``` 2. 创建一个测试项目 在你的工作目录创建一个文件夹来存放你的测试项目,例如 `MyTestProject`。 3. 创建测试用例 在项目文件夹创建一个文件来存放测试用例,例如 `test_example.py`,并在该文件写入以下测试用例: ```python import unittest from selenium import webdriver class ExampleTest(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome() def tearDown(self): self.driver.quit() def test_example(self): self.driver.get("https://www.example.com") self.assertIn("Example Domain", self.driver.title) if __name__ == '__main__': unittest.main() ``` 这个测试用例会打开 Example Domain 网站,并检查页面标题是否包含 "Example Domain"。 4. 运行测试用例 在命令行进入项目文件夹,并执行以下命令来运行测试用例: ``` python test_example.py ``` 如果一切顺利,你将会看到测试用例执行成功的结果。 5. 扩展测试用例 你可以根据需要扩展测试用例,例如添更多的测试步骤、使用断言来检查页面元素、使用数据驱动来进行多组数据的测试等等。 以上就是一个基于 PythonSelenium 和 unittest 的 UI 自动化测试框架搭建的基本步骤,你可以在此基础上进行进一步的优化和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值