环境:python、selenium、browsermob-proxy、firefox/chrome
- 使用selenium库中的webdriver用于模拟浏览器的请求,webdriver为连接不同浏览器的驱动程序
- 使用browsermob-proxy做转发代理拦截,可以修改请求headers,获取网站响应(network的加载记录)
- 安装浏览器对应的driver
- 安装所需库
pip install selenium
pip install browsermob-proxy
- 安装所需浏览器驱动(先装浏览器)
#firefox对应驱动geckodriver
https://github.com/mozilla/geckodriver/releases
#chrome版本对应驱动及下载地址
https://www.cnblogs.com/qingqing-919/p/9055285.html http://npm.taobao.org/mirrors/chromedriver/
- 下载browsermob-proxy可执行文件
#下载编译好的可执行文件
https://github.com/lightbody/browsermob-proxy/releases
- demo
from selenium import webdriver
from browsermobproxy import Server
import json
# Server需要传入browsermob-proxy的可执行文件路径
server = Server("/xxx/browsermob-proxy-2.0-beta-6/bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()
profile = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
# executable_path为浏览器driver所在路径
driver = webdriver.Firefox(executable_path='/xxx/geckodriver', firefox_profile=profile)
proxy.new_har("baidu")
driver.get("http://www.baidu.com")
# proxy.wait_for_traffic_to_stop(1, 60)
# 保存为指定的 .har 文件
with open('1.har', 'w') as outfile:
json.dump(proxy.har, outfile)
server.stop()
driver.quit()
使用http://www.softwareishard.com/har/viewer/ 可查看har的详细信息
附加:在服务器版本linux上搭建无图形的自动化测试环境
- 安装xvfb
sudo apt install xvfb
- 安装python控制xvfb所需库
pip install xvfbwrapper
- demo
from xvfbwrapper import Xvfb
vdisplay = Xvfb(width=1280, height=740, colordepth=16)
vdisplay.start()
# launch stuff inside
# virtual display here
vdisplay.stop()