es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El archivo .spec de PyInstaller no está creando el binario del controlador de Chrome Webdriver como se esperaba.

Estoy intentando crear el binario del controlador Chrome webdriver para incluirlo en mi ejecutable, pero el archivo .spec no está haciendo lo que solicito.

Mi código de proyecto tiene lo siguiente:

from selenium import webdriver
driver = webdriver.Chrome("/Users/me/.wdm/drivers/chromedriver/mac64/96.0.4664.45/chromedriver")

Esto es correcto y todo funciona bien cuando lo ejecuto en IDLE.

Aquí está la sección relevante del archivo ‘project.spec’ para PyInstaller:

a = Analysis(['project.py'],
             pathex=['/Users/me/Desktop/project'],
             binaries=[('/Users/me/.wdm/drivers/chromedriver/mac64/96.0.4664.45/chromedriver', './selenium/webdriver')],
             datas=[],

Las carpetas ‘selenium’ y ‘webdriver’ se crean correctamente en la carpeta ‘dist’ – /dist/project/selenium/webdriver,

pero aquí tengo dos carpetas, ninguna de las cuales contiene el controlador Chrome webdriver:
/firefox
/remote

Solo una carpeta para Firefox (que no uso y nunca he mencionado en mi código) con el controlador FF webdriver y un archivo .xpi, y la carpeta ‘remote’, que contiene ‘getAttribute.js’ e ‘isDisplayed.js’.

Obviamente, he intentado ejecutar el ejecutable y todo va bien hasta el punto en que se requiere el controlador webdriver, momento en el que muestra el siguiente error:

AttributeError: el módulo 'selenium.webdriver' no tiene el atributo 'Chrome'

¿Cómo puedo hacer que esto funcione? He visto varias preguntas similares, pero ninguna me está ayudando.
Soy nuevo en PyInstaller y nunca antes he creado un binario como este. ¿Qué me falta?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que PyInstaller no está empaquetando correctamente el archivo binario del controlador de Chrome webdriver con tu ejecutable. Una posible solución es copiar manualmente el archivo binario del chromedriver en el directorio de tu proyecto y agregarlo a la opción “binaries” en tu archivo de especificaciones.

    Primero, localiza el archivo binario del chromedriver en tu sistema y cópialo en el directorio de tu proyecto. Luego, modifica la opción “binaries” en el archivo de especificaciones de la siguiente manera:

    binaries=[('/ruta/al/chromedriver', './selenium/webdriver')],
    

    Reemplaza “/ruta/al/chromedriver” con la ruta al archivo binario del chromedriver que acabas de copiar en tu directorio de proyecto.

    Después de realizar estas modificaciones, ejecuta nuevamente PyInstaller para generar un nuevo ejecutable con el binario del Chrome webdriver incluido.

Comments are closed.