2017-09-01 6 views
2

Ich verwende den Python-Client für Browsermob, um den Datenverkehr meiner Selentests aufzuzeichnen. Selen Grid ist in einem Docker Container mit Bildern für Chrom und Firefox. Ich kann scheinen, die Docker-Bilder richtig zu konfigurieren, um sich mit dem Proxy und dem Raster zu verbinden. Hier ist der Code, den ich verwende den Proxy und die Remote-Web-Treiber zu erstellen:Browsermob mit Selenraster am Andockfenster ausführen

server = browsermobproxy.Server('mylocalpathtobrowsermobbin') 
server.start() 
proxy = server.create_proxy() 
proxy.new_har() 
driver = webdriver.Remote(
       command_executor='http://127.0.0.1:4444/wd/hub', 
       desired_capabilities={ 
        'browserName': 'chrome', 
        'chromeOptions': { 
         'args': ["--proxy-server={}".format(proxy.proxy)]} 
        }) 

Und das ist meine Docker-Compose-Datei:

 
hub: 
    image: selenium/hub 
    ports: 
    - "4444:4444" 
chrome: 
    image: selenium/node-chrome-debug 
    volumes: 
    - /dev/shm:/dev/shm 
    links: 
    - hub 
    ports: 
    - "5900:5900"

Ich bin neu in Andockfenster, ich verstehe, dass Ich muss den Port offen legen, den der Proxy verwendet, um eine Verbindung herzustellen, aber ich kann es nicht funktionieren. Jede Hilfe wird geschätzt, danke!

+0

wo läuft der Code? –

+0

Jetzt läuft es lokal, sowohl die Test-und die Docker Bilder, schließlich wird es auf jenkins CI laufen, das ist ziemlich das gleiche Setup wie meine lokale Maschine. – eduardoreynoso

Antwort

0

auf meine eigene Frage auf der Grundlage der Antwort von Sergey Antwort https://hub.docker.com/r/spothero/browsermob-proxy/

aus diesem Repository erstellt: https://github.com/sskorol/docker-browsermob-proxy

Alle Kredite goest Sergey für die Andockdatei.

Meine Docker compose Datei:

 
hub: 
    image: selenium/hub 
    ports: 
    - "4444:4444" 
firefox: 
    image: selenium/node-firefox 
    links: 
    - hub 
chrome: 
    image: selenium/node-chrome-debug 
    volumes: 
    - /dev/shm:/dev/shm 
    links: 
    - hub 
    ports: 
    - "5900:5900" 
browsermobproxy: 
    image: spothero/browsermob-proxy:1.0.0 
    ports: 
    - "9090-9191:9090-9191" 
    expose: 
    - "9090-9191" 
    links: 
    - hub 
    - firefox 
    - chrome 

Auf der jenkins Job, den ich ein Shell-Schritt haben:

 
#!/bin/bash 
docker-compose up -d --force-recreate 
sleep 10s 

PROXY_IP_ADDRESS="$(docker inspect --format {{.NetworkSettings.IPAddress}} browsermobproxy_1)" 
export BROWSERMOB_CONTAINER_HOST=$PROXY_IP_ADDRESS 

Ich benutze eine Umgebungsvariable die Hosts zu meinem Test-Code zu übergeben. Hier ist der Code, der die WebDriver mit dem Proxy initialisiert:


    import browsermobproxy 
    self.client = browsermobproxy.Client('localhost:9090') 
    self.driver = webdriver.Remote(
     command_executor=settings.SELENIUM_GRID_HUB, 
     desired_capabilities={ 
      'browserName': 'chrome', 
      'chromeOptions': { 
       'args': ["--proxy-server={}".format(
        os.environ.get('BROWSERMOB_CONTAINER_HOST'), self.client.port)] 
      } 
     }) 

hoffe, das hilft!

1

Sie müssen BMP auch in einem Container erhöhen. Und dann verlinke es mit einem Gitter. Überprüfen Sie diese article, um die Idee und wichtige Implementierungs-/Konfigurationspunkte zu erhalten. Ich schob ein browsermob-Proxy-Bild Andockfenster Hub:

+1

Dank Sergey, ich habe den Artikel und den Link zu Ihrer Implementierung verwendet Ich habe es geschafft, es funktioniert, sobald ich eine Minute habe, werde ich eine vollständige Antwort für andere Leute veröffentlichen zu sehen. Danke noch einmal! – eduardoreynoso

Verwandte Themen