I got the next error in my Python routine: "OSError: [WinError 193] %1 is not a valid Win32 application."
I have the Chrome version installed, Versión 127.0.6533.89 (Build Official) (64 bits)
This is my code:
def start_chrome(ruta_descarga):
"""Inicia Chrome con los parametros indicados y devuelve el Driver"""
#Intalamos la version de ChromeDriver correspondiente
ruta = ChromeDriverManager().install()
#OPCIONES DE CHROME:
options = Options() #instanciamos las opciones de chrome
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36"
options.add_argument(f"user-agent={user_agent}") # define un user agent perzonalizado
#options.add_argument("--windows-size=1000,1000") # para configurar un alto y ancho de la ventana
options.add_argument("--start-maximized") #para maximar la ventana de Chrome (solo funciona si no se indica windows size)
options.add_argument("--disable-web-security") #desahabilita la politica del mismo origen o Same Origine Policy
options.add_argument("--disable- ") # para que no cargue las extensiones de Chrome
options.add_argument("--disable-notifications") # para bloquear notificaciones de Chrome
options.add_argument("--ignore-certificate-errors") # Para ignorar el aviso "Su conexion no es segura"
options.add_argument("--no-sandbox") # deshabilita el modo sanbox, No se sabe para que sirve pero en tutoriales lo utilizan
options.add_argument("--log-level=3") #para que Chromedriver no muestre nada en la terminal
options.add_argument("--allow-running-insecure-content") # desactiva el aviso de "contenido no seguro"
options.add_argument("--no-default-browser-check") # Evita el aviso de Chrome no es navegador por defecto
options.add_argument("--no-first-run") # evita le ejecucion de ciertas tareas que se realizan la primera vez que se ejecuta Chrome
options.add_argument("--no-proxy-server") # para no usar el proxy, sino conexiones directas
options.add_argument("--disable-blink-features=AutomationControlled") # evita que selenium sea detectados por sistemas anti bots
options.add_argument("--user-data-dir=C:/Users/Probook/AppData/Local/Google/Chrome/User Data/Profile 1")
#PARAMETROS A OMIITR EN EL INICIO DE CHROMEDRIVE
exp_opt = [
'enable-automation', #para que no muestre la notificacion de "Un software automatizado de pruebas está controlado Chrome"
'ignore-certificate-errors', # para ignorar errores de cerficados (a veces estan caducados)
'enable-logging' # para que no se muestre en la terminal "DevTools listening on..."
]
options.add_experimental_option("excludeSwitches", exp_opt)
#PARAMETROS QUE DEFINEN LAS PREFERENCIAS EN CHROMEDRIVER
prefs = {
"profile.default_content_setting_values.notifications" : 2, # notificaciones: 0=preguntar | 1:permitir | 2:no permitir
"intl.accept_languages" : ["es-ES","es"], # para definir el idioma del navegador
"credentials_enable_service" : False, # para evitar que Chrome pregunte si queremos guardar la contresaña al loguearnos
"download.default_directory" : f"{ruta_descarga}"
}
options.add_experimental_option("prefs", prefs)
#instancia el servicio de chromedriver
s = Service(ruta)
#instanciamos webdriver de selenium con Chrome
driver = webdriver.Chrome(service=s, options=options) #se añade el argmento OPTIONS
#devolvemos el driver
return driver
This is the error:
Traceback (most recent call last):
File "G:\Mi unidad\Declaraciones\Programas\descarga_exogena.py", line 596, in <module>
desca_archivo_dian(ruta_proyecto,rango,year_consulta)
File "G:\Mi unidad\Declaraciones\Programas\descarga_exogena.py", line 455, in desca_archivo_dian
driver = start_chrome(ruta_folder_name)
File "G:\Mi unidad\Declaraciones\Programas\descarga_exogena.py", line 429, in start_chrome
driver = webdriver.Chrome(service=s, options=options) #se añade el argmento OPTIONS
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
super().__init__(
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 55, in __init__
self.service.start()
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 98, in start
self._start_process(self._path)
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\site-packages\selenium\webdriver\common\service.py", line 208, in _start_process
self.process = subprocess.Popen(
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 951, in __init__
self._execute_child(args, executable, preexec_fn, close_fds,
File "C:\Users\Probook\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1420, in _execute_child
hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
OSError: [WinError 193] %1 no es una aplicación Win32 válida
I tried deleting the chromedriver in the folder path : "C:\Users\myuser.wdm\drivers\chromedriver\win64". But it didn't work.
There seems to be problem wih executable file (Chrome Driver). Might be driver be driver got outdate when your Operating Sytem upgraded it. Here are few suggestions to resolve this
Try to use Self Upgrading Web Driver Manager (So you can avoid getting problem).
Use webdriver_manager package ChromeDriverManager that will will help you install the correct driver automatically.
Here is code snippet.
ChromeDriverManager().install()