Вопрос:

Как использовать browsermob с python-selenium?

java python selenium browsermob

4185 просмотра

4 ответа

15250 Репутация автора

Я хочу использовать browsermob для мониторинга сетевых подключений при выполнении теста GUI с селеном. Я нашел некоторую информацию и документацию здесь и здесь, и здесь , но совершенно неясно, как на самом деле это использовать.

В документации это гласит:

server = Server("path/to/browsermob-proxy")

Но что это за путь? Где это найти?

Тоже вижу

java -jar browsermob.jar --port 9090

но нет никакого объяснения относительно того, что это за файл jar, является ли он частью установки browsermob или чем-то не связанным.

Я был бы признателен, если бы кто-нибудь смог предоставить ПОЛНЫЙ и РАБОЧИЙ пример того, как использовать браузер моб и что ВСЕ, что мне нужно установить ...

Автор: Alex Источник Размещён: 11.01.2018 07:35

Ответы (4)


3 плюса

5141 Репутация автора

Необходимо настроить драйвер для использования BMP в качестве прокси, чтобы он мог записывать сетевую активность. Вот пример ....

from browsermobproxy import Server
from selenium import webdriver

server = Server('/path/to/bmp/bin/browsermob-proxy') #Local path to BMP
server.start()
proxy = server.create_proxy() #Proxy is used to generate a HAR file containing the connection URLS that the MP3s are loaded from.
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy)) #Configure chrome options
driver = webdriver.Chrome(chrome_options=chrome_options)
proxy.new_har('filename') 

Тогда все действия будут записаны в этот файл.

В моем случае путь для двоичного файла был C:\Python27\Lib\site-packages\browsermobproxy\browsermob-proxy-2.1.0-beta-3\bin\browsermob-proxyв Windows с Python 2.7

Автор: sytech Размещён: 11.01.2018 07:44

11 плюса

54646 Репутация автора

BrowserMob Proxy

BrowserMob Proxyявляется инструментом с открытым исходным кодом, который используется для сбора данных о производительности для веб-приложений в формате HAR. Он также позволяет манипулировать поведением браузера и трафиком, таким как имитация сетевого трафика, переписывание HTTP-запросов и ответов и т. Д., А также манипулировать сетевым трафиком из своих приложений AJAX. Вкратце, BrowserMob proxyпомогает нам собирать данные о производительности на стороне клиента для веб-приложения с помощью автоматических тестов Selenium WebDriver.

Вы можете найти более подробную информацию о документацииBrowserMob Proxy по Python и этом руководстве .

Демонстрация BrowserMob Proxy 2.0 с клиентом Python для Windows

  • Установите browsermob-proxy через CLI:

    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-бен сформировать следующий URL:

    https://bmp.lightbody.net/
    
  • Extractи Saveкаталог вC:\Utility

  • LaunchBrowsermobproxy сервера вручную с помощью команды 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 Server через ваш код, как показано ниже.

  • Создайте новый 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()
    
  • Снимок:

browsermobproxy

  • Выполнить Testкак запуск Python
  • Во время выполнения Programвы увидите, что браузер Firefox Quantum инициализируется, а url http://www.google.co.in открывается и закрывается в конце теста.
  • По завершении Test Executionвы найдете следующие файлы в вашем рабочем пространстве, которые предоставят вам все детали Test Execution:

    bmp.log
    geckodriver.log
    server.log
    
  • Снимок: browsermobProxy_logs

Автор: DebanjanB Размещён: 15.01.2018 04:05

4 плюса

87360 Репутация автора

Решение

Захват браузерного моба Вы можете попробовать ниже код

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)

Это помогает избавиться от некоторых неустойчивых проблем, с которыми можно столкнуться во время запуска сервера.

Автор: Tarun Lalwani Размещён: 22.01.2018 05:47

0 плюса

41 Репутация автора

Эта проблема связана с тем, что установка browsermob-proxy не просто делает:

pip install browsermob-proxy

После того, как вы выполнили приведенный выше код, вам нужно перейти на https://bmp.lightbody.net , скачать zip, распаковать его, а затем при вызове Server () в вашем скрипте python определить путь к исполняемому файлу из zip, который вы только что выполнили. создано. Он находится в папке «bin» и называется browsermob-proxy.

В моем случае это было:

server = Server("/anaconda3/lib/python3.7/site-packages/browsermobproxy/browsermob-proxy-2.1.4/bin/browsermob-proxy")
Автор: Tony Simonovsky Размещён: 04.05.2019 09:48
Вопросы из категории :
32x32