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 ...
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.
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 .
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é:
Test
en tant que Python RunProgram
, vous observerez que navigateur Firefox Quantum sera initialisé et que url
http://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
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.