2

Ich bin wirklich verwirrt mit Python und Selen. Ich habe sowohl Chrome als auch Phantomjs mit Selen auf Mac eingerichtet und es funktioniert ok.Selen besten Weg zu chrome kopflosen parallelen Instanzen Python

Allerdings kann ich Phantomjs nur als kopflos ausführen, und es wird wirklich frustrierend, Dinge zweimal zu kodieren (für Phantom und Chrom), nur damit ich sehen kann, was passiert. Zumal sie ganz anders funktionieren.

Von dem, was ich verstehe, gibt es diese zwei Dinge:

Docker Selen - https://github.com/elgalu/docker-selenium

Dies ermöglicht ohne Kopf Firefox und Chrome, VNC, um zu sehen, was geschieht.

Selenium Grid Extension - https://github.com/zalando/zalenium

Dies ermöglicht die parallele Ausführung. Wie auch immer, ich frage mich, ob ich das wirklich brauche, da ich meine parallele Ausführung bereits im Unittest geschrieben habe?

Aus früheren Forschung mein Verständnis ist, dass Selen Raster tut wirklich für Python arbeiten (seine Java-basierte)

Wenn jemand mich gerade auf was einstellen, dass zu verwenden wäre toll.

Ich denke, das Chrom ohne Kopf gerade verwenden und hoffentlich werde ich noch in der Lage sein, meine parallele Ausführung zu tun in Unittest

Antwort

1

Sie sind ein paar Dinge mischen, lassen Sie uns klären:

  • PhantomJS ist ein kopfloser Browser, der die WebKit-Rendering-Engine verwendet (nicht genau wie Chrome) und mit UI nicht ausführen kann.
  • Sie müssen nicht zweimal codieren, Sie können den Browsernamen aus einer Konfigurationsdatei abrufen und mit der Schnittstelle webdriver arbeiten, um den gewünschten Browser zu erstellen.
  • Wenn Sie speziell kopflos Chrome ausführen möchten, versuchen Sie this, obwohl AFAIK es in Beta-Phasen und nur unter Linux ist.
  • Die parallele Ausführung kann auf verschiedene Arten erreicht werden (Docker, Gitter, Test-Framework, etc ...). Abhängig von Ihrem Fall sollten Sie wählen, was zu Ihnen passt. In meinem Fall denke ich, docker und ein Raster ist ein Overhead und Sie sollten weiterhin unittest verwenden: 1. Docker lässt Sie Chrome mit einer virtuellen Anzeige (Art von kopflos) laufen, aber es ist Spezialität ist in Skalierung schnell, die ich von Ihnen vermute brauche ich nicht. 2. Selen Grid meist für Browser, OS-Matrix verwendet. Es spielt keine Rolle, dass es Java basiert, weil es ein Standalone-Server ist, verbinden Sie sich mit in welcher Sprache auch immer. So

Ich hoffe, es ist

Set Sie gerade

;)

+0

Ernsthaft gesetzt haben mich gerade meinen Freund - Vielen Dank.Ich bin mir nicht sicher über das Coding-Bit, denn was passiert für mich (wenn ich Proxies und einige andere Dinge setze) ist, dass spezifischer Code, der für den verwendeten Treiber relevant ist, notwendig ist, insbesondere bei der Fehlerüberprüfung. Außerdem hat Firefox einige Fehler und bringt keine Fehler, wie es sein sollte (während Chrome dies tut), daher muss ich eine Reihe von Problemumgehungen dafür erstellen. Ich verschwende viel Zeit für mich im Mo, also denke ich, dass ich es zuerst mit Docker/Grid/Chrome kopflos versuchen werde und wenn das dann nicht klappt, geh zu deinem Chromvorschlag. –

+1

NP! Ich bin nicht sicher, wie es in Python zu tun, aber Sie können überprüfen, in welcher Browser Sie laufen, auch wenn Sie mit der Schnittstelle arbeiten .. in C# wird es so etwas wie 'if (typeof (driver) == typeof (FirefoxDriver)) dann handleSpecificError() '. – Moshisho

+1

Das ist wirklich cool, du bist ein Juwel Moshisho. Das spart mir so viel Zeit. Hoffe, du hast einen schönen Tag :) –

Verwandte Themen