如何在python-selenium中使用browsermob?

Ale*_*lex 13 python selenium browsermob

我想在使用selenium进行GUI测试时使用browsermob来监控网络连接.我在这里,这里这里找到了一些信息和文档,但是如何真正使用它绝对不清楚.

在文档中,它读到:

server = Server("path/to/browsermob-proxy")
Run Code Online (Sandbox Code Playgroud)

但那条路是什么?哪里可以找到它?

我也明白了

java -jar browsermob.jar --port 9090
Run Code Online (Sandbox Code Playgroud)

但是没有解释这个jar文件是什么,如果它是browsermob安装的一部分,或者是不相关的东西.

如果有人能提供关于如何使用browsermob的COMPLETE和WORKING示例,以及我需要安装的所有内容,我将不胜感激......

Deb*_*anB 11

BrowserMob Proxy

BrowserMob Proxy是一种开源工具,用于捕获 HAR格式的Web应用程序的性能数据.它还允许操纵浏览器行为和流量,例如模拟网络流量,重写HTTP请求和响应等,以及操纵来自其AJAX应用程序的网络流量.简而言之,BrowserMob proxy帮助我们使用Selenium WebDriver自动化测试捕获Web应用程序的客户端性能数据.

您可以BrowserMob ProxyPython文档本教程中找到更多详细信息.

在Windows上使用Python客户端演示BrowserMob Proxy 2.0

  • 通过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
    
    Run Code Online (Sandbox Code Playgroud)
  • Downloadbrowsermob代理二进制文件browsermob代理-2.1.4-斌形成以下网址:

    https://bmp.lightbody.net/
    
    Run Code Online (Sandbox Code Playgroud)
  • ExtractSave其中的目录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
    
    Run Code Online (Sandbox Code Playgroud)
  • 您也可以通过以下代码启动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()
    
    Run Code Online (Sandbox Code Playgroud)
  • 快照:

browsermobproxy

  • 执行你TestPython Run
  • 当你Program执行你会看到火狐浏览器昆腾被初始化和url http://www.google.co.in打开,并在测试结束时被关闭.
  • 完成后,Test Execution您将在工作区中找到以下文件,这些文件将为您提供以下所有详细信息Test Execution:

    bmp.log
    geckodriver.log
    server.log
    
    Run Code Online (Sandbox Code Playgroud)
  • 快照: browsermobProxy_logs

  • 为什么所有这些都不是原始“browsermob-proxy”文档的一部分?我应该如何知道安装什么以及如何安装??? (2认同)

Tar*_*ani 5

浏览器暴民捕获 您可以尝试以下代码

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()
Run Code Online (Sandbox Code Playgroud)

两件事,如果您的代码失败,则有时可能会打开该过程。所以我在下面添加了相同的内容

import psutil
import time

for proc in psutil.process_iter():
    # check whether the process name matches
    if proc.name() == "browsermob-proxy":
        proc.kill()
Run Code Online (Sandbox Code Playgroud)

在创建代理之前和之后也要休眠1秒

server.start()
time.sleep(1)
proxy = server.create_proxy()
time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

这有助于消除一些间歇性的问题,这些问题在服务器启动之前可能会面临。


小智 5

这个问题与以下事实有关,即 browsermob-proxy 的安装不仅仅是执行以下操作:

pip install browsermob-proxy
Run Code Online (Sandbox Code Playgroud)

执行上面的代码后,您需要转到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")
Run Code Online (Sandbox Code Playgroud)