web-dev-qa-db-fra.com

Comment utiliser browsermob avec python-sélénium?

Je souhaite utiliser browsermob pour surveiller les connexions réseau lors d'un test d'interface graphique avec Selenium. J'ai trouvé des informations et de la documentation ici et ici et ici , mais il est absolument difficile de savoir comment l'utiliser réellement. 

Dans la documentation, on lit:

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

Mais quel est ce chemin? Où le trouver?

Aussi je vois

Java -jar browsermob.jar --port 9090

mais aucune explication du tout sur ce qu'est ce fichier jar, si cela fait partie de l'installation de browsermob ou quelque chose de différent. 

J'apprécierais si quelqu'un pouvait fournir un exemple COMPLET et FONCTIONNEL sur l'utilisation de browsermob et sur tout ce que je dois installer ...

10
Alex

 Browser mob capturing Vous pouvez essayer le code ci-dessous

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

Deux choses, si votre code échoue, le processus peut parfois rester ouvert. J'ai donc ajouté ci-dessous pour le même

import psutil
import time

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

Également un sommeil de 1 seconde avant et après la création du proxy

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

Cela aide à se débarrasser de certains problèmes intermittents auxquels le serveur peut faire face en prenant le temps de démarrer.

3
Tarun Lalwani

BrowserMob Proxy

BrowserMob Proxy est un outil open source utilisé pour capturer des données de performance pour une application Web au format HAR. Il permet également de manipuler le comportement et le trafic du navigateur, tels que la simulation du trafic réseau, la réécriture des demandes et des réponses HTTP, etc., et de manipuler le trafic réseau à partir de leurs applications AJAX. En bref, BrowserMob proxy nous aide à capturer les données de performances côté client pour une application Web à l'aide de tests automatisés Selenium WebDriver.

Vous pouvez trouver plus de détails sur BrowserMob Proxy dans le Documentation Python et ce tutoriel .

Démonstration de BrowserMob Proxy 2.0 avec le client Python sous Windows

  • Installez browsermob-proxy par le biais de la 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 le browsermob-proxy binaires browsermob-proxy-2.1.4-bin forment l'url suivante:

    https://bmp.lightbody.net/
    
  • Extract et Save le répertoire dans C:\Utility

  • Launch le Browsermobproxy Server manuellement à l'aide de la commande 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
    
  • Vous pouvez également lancer le Browsermobproxy Server via votre code comme ci-dessous.

  • Créez un nouveau module PyDev (si vous utilisez Eclipse) et écrivez un programme de base avec votre IDE comme suit:

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

 browsermobproxy

  • Exécutez votre Test en tant que Python Run
  • Pendant l'exécution de votre Program, vous observerez que navigateur Firefox Quantum sera initialisé et que urlhttp://www.google.co.in s'ouvrira et se fermera à la fin. du test.
  • Une fois le Test Execution terminé, vous trouverez les fichiers suivants dans votre espace de travail, qui vous donneront tous les détails du Test Execution:

    bmp.log
    geckodriver.log
    server.log
    
  • Instantané:  browsermobProxy_logs

8
DebanjanB

Vous devez configurer le pilote pour qu'il utilise BMP comme proxy afin qu'il puisse enregistrer l'activité du réseau. Voici un exemple....

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

Ensuite, toute l'activité sera enregistrée dans ce fichier. 

Dans mon cas, le chemin du fichier binaire était C:\Python27\Lib\site-packages\browsermobproxy\browsermob-proxy-2.1.0-beta-3\bin\browsermob-proxy sous Windows avec Python 2.7.

2
sytech