Chromedriver, Selenium – Automatizar descargas

Estoy usando Selenium 2.43.0 con Python 2.7.5. En un momento dado, la prueba hace clic en un botón que envía información del formulario al servidor. Si la solicitud es exitosa, el servidor responde con

1) Un mensaje exitoso.

2) Un PDF con la información del formulario fusionada en.

No me interesa probar el PDF, mi prueba solo busca un mensaje exitoso. Sin embargo, el PDF es parte de la respuesta del paquete del servidor que, como evaluador, no puedo cambiar.

Hasta hace poco, esto nunca fue un problema con Chromedriver, ya que Chrome descargaría automáticamente los archivos PDF en su carpeta predeterminada.

Sin embargo, hace unos días, uno de mis entornos de prueba comenzó a abrir una ventana separada con una pantalla “Imprimir” para el pdf, lo que descarrila mis pruebas.

No quiero ni necesito este diálogo. ¿Cómo suprimo este diálogo mediante progtwigción utilizando las opciones de chromedriver? (Algo equivalente a la opción pdfjs.disable de FireFox en about:config ).

Aquí está mi bash actual de omitir el cuadro de diálogo, que no funciona (porque “no funciona” no desactiva ni suprime la ventana de diálogo de impresión en PDF):

  dc = DesiredCapabilities.CHROME dc['loggingPrefs'] = {'browser': 'ALL'} chrome_profile = webdriver.ChromeOptions() profile = {"download.default_directory": "C:\\SeleniumTests\\PDF", "download.prompt_for_download": False, "download.directory_upgrade": True} chrome_profile.add_experimental_option("prefs", profile) chrome_profile.add_argument("--disable-extensions") chrome_profile.add_argument("--disable-print-preview") self.driver = webdriver.Chrome(executable_path="C:\\SeleniumTests\\chromedriver.exe", chrome_options=chrome_profile, service_args=["--log-path=C:\\SeleniumTests\\chromedriver.log"], desired_capabilities=dc) 

Todas las versiones de los componentes son iguales en ambos entornos de prueba:

Selenium 2.43.0, Python 2.7.5, Chromedriver 2.12, Chrome (navegador) 38.0.02125.122

Tuve que indagar en el código fuente de este, no pude encontrar ningún documento que incluya el conjunto completo de Preferencias de usuario de Chrome.

La clave es "plugins.plugins_disabled": ["Chrome PDF Viewer"]}

CÓDIGO COMPLETO:

 dc = DesiredCapabilities.CHROME dc['loggingPrefs'] = {'browser': 'ALL'} chrome_profile = webdriver.ChromeOptions() profile = {"download.default_directory": "C:\\SeleniumTests\\PDF", "download.prompt_for_download": False, "download.directory_upgrade": True, "plugins.plugins_disabled": ["Chrome PDF Viewer"]} chrome_profile.add_experimental_option("prefs", profile) #Helpful command line switches # http://peter.sh/experiments/chromium-command-line-switches/ chrome_profile.add_argument("--disable-extensions") self.driver = webdriver.Chrome(executable_path="C:\\SeleniumTests\\chromedriver.exe", chrome_options=chrome_profile, service_args=["--log-path=C:\\SeleniumTests\\chromedriver.log"], desired_capabilities=dc) 

Curiosamente, el comando de comando chrome_profile.add_argument("--disable-plugins") no solucionó este problema. Pero prefiero el abordaje más quirúrgico de todos modos.