it-swarm.com.de

Wie verwende ich Browsermob mit Python-Selen?

Ich möchte browsermob verwenden, um die Netzwerkverbindungen zu überwachen, wenn ein GUI-Test mit Selenium durchgeführt wird. Ich habe einige Informationen und Dokumentation gefunden hier und hier und hier , aber es ist absolut unklar, wie man sie wirklich benutzt. 

In der Dokumentation heißt es:

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

Aber wie ist dieser Weg? Wo finde ich das?

Ich sehe auch

Java -jar browsermob.jar --port 9090

es gibt jedoch keine Erklärung, was diese Jar-Datei ist, ob sie Teil der Installation von browsermob ist oder nicht. 

Ich würde es begrüßen, wenn jemand ein KOMPLETTES und ARBEITENDES Beispiel zur Verwendung von Browsermob bereitstellen könnte und was ich ALLES installieren muss ...

10
Alex

 Browser mob capturing Sie können den folgenden Code ausprobieren

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()

Zwei Dinge: Wenn Ihr Code fehlschlägt, kann der Prozess manchmal offen gelassen werden. Also habe ich unten für das gleiche hinzugefügt

import psutil
import time

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

Auch ein Schlaf von 1 Sekunde vor und nach dem Erstellen eines Proxy

server.start()
time.sleep(1)
proxy = server.create_proxy()
time.sleep(1)

Dies hilft, einige zeitweilige Probleme zu lösen, die während des Startens des Servers auftreten können

3
Tarun Lalwani

BrowserMob Proxy

BrowserMob Proxy ist ein Open-Source-Tool, mit dem Leistungsdaten erfassen für Webanwendungen in einem HAR-Format erfasst wird. Außerdem können Sie das Browserverhalten und den Datenverkehr manipulieren, z. B. das Simulieren des Netzwerkverkehrs, das Umschreiben von HTTP-Anforderungen und -Antworten usw. und das Ändern des Netzwerkverkehrs in den Anwendungen AJAX. Kurz gesagt hilft BrowserMob proxy bei der Erfassung clientseitiger Leistungsdaten für eine Webanwendung mithilfe von automatisierten Selenium WebDriver-Tests.

Weitere Informationen zu BrowserMob Proxy finden Sie in der Python-Dokumentation und in diesem Tutorial .

Demonstration von BrowserMob Proxy 2.0 mit Python-Client unter Windows

  • Installieren Sie browsermob-proxy über die 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 the browsermob-proxy binaries browsermob-proxy-2.1.4-bin bilden die folgende URL:

    https://bmp.lightbody.net/
    
  • Extract und Save das Verzeichnis innerhalb von C:\Utility

  • Launch the Browsermobproxy Server manuell über den CLI-Befehl:

    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
    
  • Sie können den Browsermobproxy Server auch wie folgt über Ihren Code starten.

  • Erstellen Sie ein neues PyDev-Modul (wenn Sie Eclipse verwenden) und schreiben Sie ein Basisprogramm über Ihre IDE wie folgt:

    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()
    
  • Schnappschuss:

 browsermobproxy

  • Führen Sie Ihre Test als Python Run aus.
  • Während Ihre Program ausgeführt wird, werden Sie beobachten, dass Firefox Quantum Browser initialisiert wird und die urlhttp://www.google.co.in sich öffnet und am Ende geschlossen wird des Tests.
  • Nach Abschluss des Test Execution finden Sie die folgenden Dateien in Ihrem Arbeitsbereich, in denen Sie alle Details des Test Execution finden:

    bmp.log
    geckodriver.log
    server.log
    
  • Schnappschuss:  browsermobProxy_logs

8
DebanjanB

Sie müssen den Treiber so konfigurieren, dass BMP als Proxy verwendet wird, damit er die Netzwerkaktivität aufzeichnen kann. Hier ist ein Beispiel....

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') 

Dann werden alle Aktivitäten in dieser Datei aufgezeichnet. 

In meinem Fall war der Pfad für die Binärdatei C:\Python27\Lib\site-packages\browsermobproxy\browsermob-proxy-2.1.0-beta-3\bin\browsermob-proxy unter Windows mit Python 2.7

2
sytech

Dieses Problem hängt damit zusammen, dass bei der Installation von browsermob-proxy nicht nur Folgendes ausgeführt wird:

pip install browsermob-proxy

Nachdem Sie den obigen Code ausgeführt haben, müssen Sie zu https://bmp.lightbody.net gehen, die Zip herunterladen, entpacken und dann bei Aufruf von Server () in Ihrem python Skript, identifiziere den Pfad zur ausführbaren Datei aus der soeben erstellten Zip. Sie befindet sich im Ordner "bin" und heißt browsermob-proxy.

In meinem Fall war es:

server = Server("/anaconda3/lib/python3.7/site-packages/browsermobproxy/browsermob-proxy-2.1.4/bin/browsermob-proxy")
0
Tony Simonovsky