J'ai un script python qui ne sera déclenché qu'en appelant my.ip.address/test
. Cela fonctionne bien si je lance le code PHP via la ligne de commande.Xvfb: connexion refusée lors de l'exécution du script de test via le navigateur sur Fedora
Cependant, si j'accéder au automatisation des tests via un navigateur en utilisant l'URL spécifiée, il me donne cette erreur:
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
Erreur dans 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
Déjà installé Xvfb
et exécutez it:
$ whoami
codekaizer #with root privileges
$ Xvfb :99 -screen 0 1024x768x24 -ac -fbdir /tmp/.X11-unix/X99 &
Exécutez l'extrait de code PHP pour /test
point final:
$cmd = 'xvfb-run -a python scripts/crawler.py'
return shell_exec($cmd);
Référence pour le code Python:
#!/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()
Je suis tout à fait bloqué en ce moment et vraiment apprécier l'aide de quelqu'un!
Détails:
- Firefox 53,0
- Geckodriver 0.16.1
- Fedora 22 x86_64
Merci! - ck
Vous devez instancier l'affichage avant d'instancier le navigateur. Changez ces lignes et faites-moi savoir si cela fonctionne. –
Salut @LeviNoecker, merci. J'ai déjà mis à jour mon post. J'ai d'abord couru Xvfb puis couru le navigateur. Ça ne marche pas encore. Dans l'attente de vos pensées. – codekaizer