Xvfb: Verbindung wurde abgelehnt, wenn ein Testskript über den Browser unter Fedora ausgeführt wurde

1067
codekaizer

Ich habe ein Python-Skript, das nur durch Aufruf ausgelöst wird my.ip.address/test. Es funktioniert gut, wenn ich den PHP-Code über die Befehlszeile abwickle.

Wenn ich jedoch über die angegebene URL auf die Testautomatisierung über einen Browser zugreife, wird der folgende Fehler angezeigt:

Traceback (most recent call last): File "scripts/crawler.py", line 10, in driver = webdriver.Firefox(capabilities={"marionette":True}) File "/usr/lib/python2.7/site-packages/selenium/webdriver/firefox/webdriver.py", line 152, in __init__ keep_alive=True) File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 98, in __init__ self.start_session(desired_capabilities, browser_profile) File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 188, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in execute self.error_handler.check_response(response) File "/usr/lib/python2.7/site-packages/selenium/webdriver/remote/errorhandler.py",  line 194, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: connection refused 

Fehler in geckodriver.log:

1495299180874 geckodriver::marionette INFO Starting browser /usr/lib/firefox/firefox with args ["-marionette"] Unable to init server: Could not connect: Connection refused Error: cannot open display: :99 

Einfacher Python-Code:

#!/usr/bin/env python2  from pyvirtualdisplay import Display from selenium import webdriver  import time import sys  driver = webdriver.Firefox(capabilities={"marionette":True})  display = Display(visible=0, size=(800,600)) display.start()  driver.get('https://www.google.com') print driver.title driver.close() display.stop() 

PHP-Code-Snippet für /testEndpunkt:

$cmd = 'xvfb-run -a python scripts/crawler.py' return shell_exec($cmd); 

Bereits installiert Xvfbund ausführen:

$ whoami codekaizer #with root privileges $ Xvfb :99 -screen 0 1024x768x24 -ac -fbdir /tmp/.X11-unix/X99 & 

Ich habe überprüft, dass /tmp/.X11-unix/X99Socket den XvfbProzess abhört.

Ich bin jetzt ziemlich festgefahren und schätze die Hilfe von jemandem wirklich!

Einzelheiten:

  • Firefox 53.0
  • Geckodriver 0.16.1
  • Fedora 22 x86_64

Vielen Dank! - ck

1

0 Antworten auf die Frage