Web测试的时候,我们经常用到浏览器的开发者工具,分析网页元素,样式(Elements),查看资源加载性能(Network),查看控制台信息(Console)甚至client端源码(Sources)等。
Selenium Webdriver能够定位DOM元素,与之交互,读取样式以进行验证等。但是Selenium只处理“结果”,它无法得知浏览器的网络控制台的信息。如果浏览器在渲染出页面之前,从某个站点加载大量资源信息,Selenium无法知道。
解决方案是,可以使webdriver通过proxy访问网络,再收集proxy端的HAR内容,以分析web应用的行为。
下面是一个简单的Demo, Windows, Python36。
下载Browsermob Proxy
Browsermob-Proxy: https://github.com/lightbody/browsermob-proxy
第一步:在github上下载browsermob-proxy 下载好之解压,进入到文件的bin目录找到 browsermob-proxy(这个Linux或者Mac运行文件)browsermob-proxy.bat(这个是Windows运行文件) [下载此文件的目的是需要使用python调用它内部的jar]
第二步:创建在使用pip把browsermob-proxy安装到本地环境中 [如果不安装这个的话,预发布上面下载的文件,就会报错,找不到需要jar]
pip3 install browsermob-proxy
#启停Proxy
server = Server('解压目录\browsermob-proxy.bat')
server.start()
proxy = server.create_proxy()
# 设置浏览器
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
领取专属 10元无门槛券
私享最新 技术干货