Kwahn
Esto es Chrome 111 en Debian 11. Estoy intentando descargar un archivo en una carpeta. A las 3 a. m. de anoche, estaba funcionando; a las 6 a. m. de esta mañana, sin modificaciones, actualizaciones o reinicios del servidor, no lo estaba. Todos los archivos, cualquier secuencia de comandos de Python que utilice este segmento de código, ahora descargan los archivos en su directorio de ejecución. A continuación se muestra la instanciación del controlador del navegador sin cabeza Chrome Selenium:
def create_temp_folder():
temp_folder = new_file_folder+directory_separator+(str)(uuid.uuid4())
os.mkdir(temp_folder)
return temp_folder
def init_chrome_service(temp_directory = False):
#init stage, notes for later class construction
service = Service(executable_path=ChromeDriverManager().install())
chrome_options = Options()
if temp_directory:
download_directory = create_temp_folder()
chrome_options.add_argument("--disable-web-security")
chrome_options.add_argument("--disable-extensions")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--headless")
prefs = {'download.default_directory' : download_directory}
chrome_options.add_experimental_option("detach", True)
chrome_options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(options=chrome_options)
return driver, download_directory
La variable chrome.default_directory existe, se está configurando, está creando correctamente el directorio, tiene permisos, no ha perdido permisos aleatoriamente y el comportamiento es el mismo ya sea que ejecute el script de Python como sudo, yo mismo o a través de un trabajo cron. He intentado reinstalar Chrome y Chromedriver.
Lo que es aún más extraño es que la misma copia exacta del código en mi computadora con Windows funciona perfectamente, por lo que algo cambió en el entorno Debian, es mi teoría de trabajo, pero por mi vida no puedo aislar qué.
El código que realmente descarga el archivo es trivial: un controlador.get(‘elementid’).haga clic() en un botón que ejecuta un informe.
El modo sin cabeza comenzó a comportarse de manera diferente hace un par de días. Si actualizó Chrome en su entorno, es posible que tenga una compilación con el problema.
https://bugs.chromium.org/p/chromedriver/issues/detail?id=4357
-
Maldito Google, siempre rompiendo mis cosas bonitas :
– Kwahn
13 de febrero a las 15:56
Teniendo el mismo problema, la siguiente sugerencia funcionó: cambiar de options.add_argument(‘–headless’) a options.add_argument(‘–headless=new’).
Tuve un problema similar y me interesé por las respuestas. Con respecto a Selenium, terminé descargando el chromium.exe yo mismo. Entonces recomendaría usar playwright lib que usa servidores azure (de alguna manera fui bloqueado de los servidores de google para descargar chromium). playwright.dev/python/docs/intro
– Je Je
10 de febrero a las 22:47