python - switchto - Chromedriver, Selenium-Automatiza las descargas
selenium software download (1)
Tuve que profundizar en el código fuente de este: no pude encontrar ningún documento que incluyera el conjunto completo de Preferencias de usuario de Chrome.
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)
Como puede ver en el código, el problema radica en el complemento de Chrome PDF Viewer. Curiosamente, el cambio de chrome_profile.add_arguement("--disable-plugins")
manta no me funcionó. Pero prefiero el enfoque más quirúrgico de todos modos.
Estoy usando Selenium 2.43.0 con Python 2.7.5. En un punto, la prueba hace clic en un botón que envía información de 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 importa probar el PDF, mi prueba solo busca un mensaje exitoso. Sin embargo, el PDF es parte de la respuesta del paquete del servidor que yo, como probador, no puedo cambiar.
Hasta hace poco, esto nunca fue un problema con Chromedriver, ya que Chrome descargaría automáticamente archivos PDF en su carpeta predeterminada.
Sin embargo, hace unos días, uno de mis entornos de prueba comenzó a mostrar una ventana separada con una pantalla de "Imprimir" para el pdf, lo que descarrila mis pruebas.
No quiero o necesito este diálogo. ¿Cómo suprimo este diálogo programáticamente utilizando las opciones de chromedriver? (Algo equivalente a la opción pdfjs.disable
de FireFox en about:config
).
Aquí está mi intento actual de eludir el diálogo, que no funciona (por "no funciona" no desactiva o suprime la ventana de diálogo de impresión 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