python selenium-webdriver port phantomjs ghostdriver

python - selenium.common.exceptions.WebDriverException: Mensaje: ''No se puede conectar a GhostDriver''



selenium-webdriver port (5)

Tuve este problema en Ubuntu después de actualizar a una nueva versión. Reinstalé todos los paquetes nodejs y python, pero lo que creo que resolvió el problema fue asegurarse de que el ejecutable del nodejs estuviera simbólicamente vinculado al node .

Estos son los comandos que utilicé:

apt-get remove node nodejs apt-get install build-essential python-dev phantomjs npm nodejs ln -s /usr/bin/nodejs /usr/bin/node npm install -g phantomjs pip install selenium bson BeautifulSoup pymongo

Estoy intentando ejecutar PhantomJS desde dentro de selenium.webdriver en un servidor Centos. PhantomJS está en la ruta y se ejecuta correctamente desde la terminal. Sin embargo, en el script parece que se lanzó, pero luego no se puede alcanzar en el puerto especificado (probé 2 puertos abiertos diferentes de mi proveedor 29842 y 60099, ambos no están funcionando y ninguno lo inicia sin un puerto específico).

El error ocurre aquí en selenium.webdriver.common.utils :

try: socket_ = socket.socket(socket.AF_INET, socket.SOCK_STREAM) socket_.settimeout(1) socket_.connect(("localhost", port)) socket_.close() return True except socket.error: return False

Esto es de mi script (lo intenté sin ningún parámetro además de escribir la ruta completa al ejecutable y ninguno de los dos funcionó):

self.browser = webdriver.PhantomJS( port=29842, desired_capabilities={ ''javascriptEnabled'': True, ''platform'': ''windows'', ''browserName'': ''Mozilla'', ''version'': ''5.0'', ''phantomjs.page.settings.userAgent'': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36" } )

Y este es el script que inicializa el webdriver de selenium.webdriver.phantomjs.service . Comprobé y subprocess.Popen Popen en realidad ejecuta phantomjs, el error ocurre en el ciclo while:

try: self.process = subprocess.Popen(self.service_args, stdout=self._log, stderr=self._log) except Exception as e: raise WebDriverException("Unable to start phantomjs with ghostdriver.", e) count = 0 while not utils.is_connectable(self.port): print utils.is_connectable(self.port) count += 1 time.sleep(1) if count == 30: raise WebDriverException("Can not connect to GhostDriver")

Todos los paquetes son la última versión: python 2.7, selenium 2 y phantomjs 1.9 binary con ghostdriver integrado. Hice que el mismo script funcione correctamente en mi máquina local Ubuntu, haciendo exactamente las mismas cosas que hice en el servidor. ¿Qué es diferente en el servidor?


Instalando nodejs-legacy package en Linux Mint 14 solucionó esto por mí.

sudo apt-get install nodejs-legacy


Para mí, este fue un problema de firewall. Phantom requiere un puerto abierto para conectarse. Si el puerto está bloqueado por un firewall, obtendrá WebDriverException("Can not connect to GhostDriver") .

Arreglar:

  1. Abra un puerto.

sudo iptables -A INPUT -s 127.0.0.1 -p tcp --dport 65000 -j ACCEPT

  1. Cree un controlador PhantomJS que use ese puerto

driver = webdriver.PhantomJS(executable_path=''/usr/local/bin/phantomjs'', port=65000)


Tuve este problema y descubrí qué lo estaba causando. En otro tutorial sobre desarrollo de aplicaciones de Facebook, me dijeron que ingresara a / etc / hosts y lo cambiara de este-

127.0.0.1 localhost

a esto-

127.0.0.1 test1.com

y guarda el archivo. A propósito, PhantomJS () ya no funcionaba después de eso. Acabo de regresar al archivo / etc / hosts y lo cambié a localhost

127.0.0.1 localhost

y funciona de nuevo


Estoy probando una aplicación python / django usando selenio con phantomjs. Todo funcionó bien durante la primera (y, a veces, la segunda prueba), pero una vez que se ejecutó la siguiente prueba, el selenio imprimió exactamente el mismo mensaje de error.

Además, si ejecuté phantomjs desde la consola después, recibí el siguiente error de nodo:

child_process.js:1136 var err = this._handle.spawn(options); ^ TypeError: Bad argument at TypeError (native) at ChildProcess.spawn (child_process.js:1136:26) at exports.spawn (child_process.js:995:9) at Object.<anonymous> (/usr/local/lib/node_modules/phantomjs/bin/phantomjs:22:10) at Module._compile (module.js:460:26) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:320) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16)

Intenté reinstalar phantomjs a través de npm (localmente y globalmente) varias veces, pero el comportamiento persistió.

Finalmente, desinstalé phantomjs a través de npm y descargué el contenedor phantomjs de phantomjs.org . Ponlo dentro de / usr / local / bin (estoy en MacOS) y me deshice del error ya que!