Подтвердить что ты не робот

Как использовать браузер с python-селеном?

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

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

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

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

Также я вижу

java -jar browsermob.jar --port 9090

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

Я был бы признателен, если кто-то сможет предоставить пример COMPLETE и WORKING о том, как использовать браузер, и что ВСЕ, что мне нужно установить...

4b9b3361

Ответ 1

Browser mob capturing Вы можете попробовать ниже код

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)

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

Ответ 2

BrowserMob Proxy

BrowserMob Proxy - это инструмент с открытым исходным кодом, который используется для сбора данных о производительности для веб-приложений в формате HAR. Он также позволяет манипулировать поведением браузера и трафиком, таким как имитация сетевого трафика, переписывание HTTP-запросов и ответов и т.д., А также манипулировать сетевым трафиком из своих приложений AJAX. Короче говоря, BrowserMob proxy помогает нам 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

  • 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 [email protected]: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

Ответ 3

Вам нужно настроить драйвер для использования 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

Ответ 4

Эта проблема связана с тем, что установка 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")