Wie führe ich Selenium in Xvfb?
Ich bin auf der EC2-Instanz. Es gibt also keine GUI.
$pip install selenium
$sudo apt-get install firefox xvfb
Dann Mach ich das:
$Xvfb :1 -screen 0 1024x768x24 2>&1 >/dev/null &
$DISPLAY=:1 java -jar selenium-server-standalone-2.0b3.jar
05:08:31.227 INFO - Java: Sun Microsystems Inc. 19.0-b09
05:08:31.229 INFO - OS: Linux 2.6.32-305-ec2 i386
05:08:31.233 INFO - v2.0 [b3], with Core v2.0 [b3]
05:08:32.121 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
05:08:32.122 INFO - Version Jetty/5.1.x
05:08:32.123 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
05:08:32.124 INFO - Started HttpContext[/selenium-server,/selenium-server]
05:08:32.124 INFO - Started HttpContext[/,/]
05:08:32.291 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@1186fab
05:08:32.292 INFO - Started HttpContext[/wd,/wd]
05:08:32.295 INFO - Started SocketListener on 0.0.0.0:4444
05:08:32.295 INFO - Started org.openqa.jetty.jetty.Server@1ffb8dc
Toll, alles sollte jetzt funktionieren, richtig?
Wenn ich mein code:
from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
browser = webdriver.Firefox()
browser.get("http://www.yahoo.com")
Bekomme ich diese:
Error: cannot open display: :0
Kommentar zu dem Problem
Wenn Sie auf einem system ohne X, laufen, Anzeige :0 sollte vorhanden sein. Versuchen Sie es mit Xvfb :0 -- siehe auch xvfb-run-wie bereits von @ema
Für die Zukunft Anhänger, beschrieb ich meine Lösung für die Ubuntu-Server: namekdev.net/2016/08/...
InformationsquelleAutor der Frage TIMEX | 2011-05-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
öffnen Sie ein terminal und führen Sie diesen Befehl
xhost +
. Dieser Befehl muss ausgeführt werden, jedes mal, wenn Sie starten Sie Ihren Rechner. Wenn alles funktioniert kann man dies hinzufügen, startup-BefehleStellen Sie auch sicher in deine /etc/environment-Datei gibt es eine Zeile
Und führen Sie dann die tests, um zu sehen, ob Ihr Problem gelöst ist.
Alle bitte beachten Sie den Kommentar von sardathrion unten, bevor Sie diese.
InformationsquelleAutor der Antwort A.J
Können Sie PyVirtualDisplay (ein Python-wrapper für Xvfb) laufen headless-WebDriver tests.
mehr info
Können Sie auch xvfbwrapper, die ein ähnliches Modul (hat aber keine externen Abhängigkeiten):
oder noch besser, verwenden Sie es als Kontext-manager:
InformationsquelleAutor der Antwort Corey Goldberg
Am einfachsten ist wahrscheinlich die Verwendung xvfb-run:
xvfb-run wird die ganze X-Autorität Tanz für Sie ist, probieren Sie es!
InformationsquelleAutor der Antwort ema
Dies ist das setup, das ich verwende:
Vor der Ausführung des tests ausgeführt werden:
Und nach den tests:
Den
init.d
Datei, die ich benutze sieht wie folgt aus:InformationsquelleAutor der Antwort shang
Wenn Sie Maven verwenden, können Sie xvfb-maven-plugin start xvfb vor tests, führen Sie Sie mit verbundenen
DISPLAY
- Umgebungsvariable, und aufhören, xvfb, nachdem alle.InformationsquelleAutor der Antwort Toilal