Ale*_*lex 13 python selenium browsermob
我想在使用selenium进行GUI测试时使用browsermob来监控网络连接.我在这里,这里和这里找到了一些信息和文档,但是如何真正使用它绝对不清楚.
在文档中,它读到:
server = Server("path/to/browsermob-proxy")
但那条路是什么?哪里可以找到它?
我也明白了
java -jar browsermob.jar --port 9090
但是没有解释这个jar文件是什么,如果它是browsermob安装的一部分,或者是不相关的东西.
如果有人能提供关于如何使用browsermob的COMPLETE和WORKING示例,以及我需要安装的所有内容,我将不胜感激......
Deb*_*anB 11
BrowserMob ProxyBrowserMob Proxy是一种开源工具,用于捕获 HAR格式的Web应用程序的性能数据.它还允许操纵浏览器行为和流量,例如模拟网络流量,重写HTTP请求和响应等,以及操纵来自其AJAX应用程序的网络流量.简而言之,BrowserMob proxy帮助我们使用Selenium WebDriver自动化测试捕获Web应用程序的客户端性能数据.
您可以BrowserMob Proxy从Python文档和本教程中找到更多详细信息.
通过CLI 安装browsermob-proxy:
C:\Users\your_user>pip install browsermob-proxy
Collecting browsermob-proxy
  Downloading browsermob-proxy-0.8.0.tar.gz
Collecting requests>=2.9.1 (from browsermob-proxy)
  Downloading requests-2.18.4-py2.py3-none-any.whl (88kB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting idna<2.7,>=2.5 (from requests>=2.9.1->browsermob-proxy)
  Downloading idna-2.6-py2.py3-none-any.whl (56kB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 639kB/s
Collecting urllib3<1.23,>=1.21.1 (from requests>=2.9.1->browsermob-proxy)
  Downloading urllib3-1.22-py2.py3-none-any.whl (132kB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 133kB 250kB/s
Collecting certifi>=2017.4.17 (from requests>=2.9.1->browsermob-proxy)
  Downloading certifi-2017.11.5-py2.py3-none-any.whl (330kB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 337kB 401kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests>=2.9.1->browsermob-proxy)
  Downloading chardet-3.0.4-py2.py3-none-any.whl (133kB)
    100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 296kB/s
Installing collected packages: idna, urllib3, certifi, chardet, requests, browse
rmob-proxy
  Running setup.py install for browsermob-proxy ... done
Successfully installed browsermob-proxy-0.8.0 certifi-2017.11.5 chardet-3.0.4 id
na-2.6 requests-2.18.4 urllib3-1.22
Download在browsermob代理二进制文件browsermob代理-2.1.4-斌形成以下网址:
https://bmp.lightbody.net/
Extract和Save其中的目录C:\Utility
Launch所述Browsermobproxy服务器通过CLI命令手动:
C:\Utility\browsermob-proxy-2.1.4\lib>java -jar browsermob-dist-2.1.4.jar --port 9090
Running BrowserMob Proxy using LittleProxy implementation. To revert to the legacy implementation, run the proxy with the command-line option '--use-littleproxy false'.
[INFO  2018-01-17T19:01:30,276 net.lightbody.bmp.proxy.Main] (main) Starting BrowserMob Proxy version 2.1.4
[INFO  2018-01-17T19:01:30,388 org.eclipse.jetty.util.log] (main) jetty-7.x.y-SNAPSHOT
[INFO  2018-01-17T19:01:30,471 org.eclipse.jetty.util.log] (main) started o.e.j.s.ServletContextHandler{/,null}
[INFO  2018-01-17T19:01:30,871 org.eclipse.jetty.util.log] (main) Started SelectChannelConnector@0.0.0.0:9090
您也可以通过以下代码启动Browsermobproxy服务器.
创建一个新PyDev模块(如果使用Eclipse)并通过IDE以下方式编写基本程序:
from browsermobproxy import Server
server = Server("C:\\Utility\\browsermob-proxy-2.1.4\\bin\\browsermob-proxy")
server.start()
proxy = server.create_proxy()
from selenium import webdriver
profile  = webdriver.FirefoxProfile()
profile.set_proxy(proxy.selenium_proxy())
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.in")
proxy.har # returns a HAR JSON blob
server.stop()
driver.quit()
快照:
Test的Python RunProgram执行你会看到火狐浏览器昆腾被初始化和url http://www.google.co.in打开,并在测试结束时被关闭.完成后,Test Execution您将在工作区中找到以下文件,这些文件将为您提供以下所有详细信息Test Execution:
bmp.log
geckodriver.log
server.log
from browsermobproxy import Server
import psutil
import time
for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == "browsermob-proxy":
        proc.kill()
dict = {'port': 8090}
server = Server(path="./BrowserMobProxy/bin/browsermob-proxy", options=dict)
server.start()
time.sleep(1)
proxy = server.create_proxy()
time.sleep(1)
from selenium import webdriver
profile = webdriver.FirefoxProfile()
selenium_proxy = proxy.selenium_proxy()
profile.set_proxy(selenium_proxy)
driver = webdriver.Firefox(firefox_profile=profile)
proxy.new_har("google")
driver.get("http://www.google.co.uk")
print (proxy.har) # returns a HAR JSON blob
server.stop()
driver.quit()
两件事,如果您的代码失败,则有时可能会打开该过程。所以我在下面添加了相同的内容
import psutil
import time
for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == "browsermob-proxy":
        proc.kill()
在创建代理之前和之后也要休眠1秒
server.start()
time.sleep(1)
proxy = server.create_proxy()
time.sleep(1)
这有助于消除一些间歇性的问题,这些问题在服务器启动之前可能会面临。
小智 5
这个问题与以下事实有关,即 browsermob-proxy 的安装不仅仅是执行以下操作:
pip install browsermob-proxy
执行上面的代码后,您需要转到https://bmp.lightbody.net,下载 zip,解压它,然后在 python 脚本中调用 Server() 时,从您刚才的 zip 中识别可执行文件的路径创建的。它位于“bin”文件夹中,称为 browsermob-proxy。
就我而言,是:
server = Server("/anaconda3/lib/python3.7/site-packages/browsermobproxy/browsermob-proxy-2.1.4/bin/browsermob-proxy")
| 归档时间: | 
 | 
| 查看次数: | 6190 次 | 
| 最近记录: |