2012-07-16 58 views
9

He creado un reproductor que automatizará Chrome utilizando selenio y ChromeDriver en C#. Está funcionando bien.Aplicación de consola ChromeDriver ocultar

Problema al que me enfrento es que, cuando crea un objeto para ChromDriver, se iniciará la aplicación ChromeDriver, que se abrirá y Chrome cargará. Es perfecto ya que esa aplicación está cargando ese Chrome para mí.

¿Hay alguna forma de que pueda abrir ese ChromeDriver oculto?

+0

Este software está destinado para la prueba. Y en ese sentido, una ventana de consola es algo bienvenido. No estoy seguro de para qué estás usando esto, pero parece que no está probando. Puede haber una mejor solución para su problema subyacente, como hacer una llamada API directamente en lugar de pasar por un navegador. –

Respuesta

6

Sí, necesita modificar el código fuente en WebDriver \ DriverService.cs en Start(); agregar:

this.driverServiceProcess.StartInfo.CreateNoWindow = true; 
+0

Tenga cuidado con esto sin usar el proceso completo de compilación para el proyecto Selenium. Simplemente construir en Visual Studio no le dará un ensamblaje equivalente al generado por el script de compilación del proyecto Selenium. – JimEvans

12

No, no hay forma de ocultar la ventana de la consola de chromedriver.exe en los enlaces .NET sin modificar el código fuente de los enlaces. Esto se ve como una característica de los enlaces, ya que hace que sea muy fácil ver cuando el código no ha limpiado correctamente los recursos del ChromeDriver, ya que la ventana de la consola permanece abierta. En el caso de algunos otros idiomas, si su código no limpia correctamente la instancia de ChromeDriver llamando al método quit() en el objeto WebDriver, puede terminar con un proceso zombie chromedriver.exe ejecutándose en su máquina.

+8

Wow, ¿en serio, downvoters? El hecho de que una respuesta no sea lo que quieres escuchar no la convierte en una respuesta incorrecta o mala. Puedo garantizar que esta respuesta sea totalmente correcta en todos los aspectos, incluidas las especulaciones sobre la intención de los autores (ya que soy el autor). – JimEvans

+0

Hola @JimEvans: en realidad tengo un problema inverso en una de mis computadoras. Esta computadora oculta todas las ventanas de consola de IEDriverServer y ChromeDriver y no sé por qué. El código no tiene ninguna de estas opciones específicas y las ventanas son visibles cuando el código se ejecuta en otras computadoras. ¿Alguna idea? ¡Gracias! – AngieM

+0

@AngieM ¿Estás utilizando los enlaces de lenguaje .NET? De lo contrario, la información en esta pregunta no se aplica a usted. Es posible que otros idiomas (Python, Ruby, Java) no le den ningún control sobre si aparece una ventana de símbolo del sistema por separado. – JimEvans

26

La modificación del código fuente en WebDriver \ DriverService.cs no es necesaria para esto en el último WebDriver. Solo necesita crear una instancia de ChromeDriverService y configurar HideCommandPromptWindow en verdadero y luego instanciar ChromeDriver mediante ese servicio y ChromeOptions. Estoy dando ejemplo C# código de abajo

 var chromeDriverService = ChromeDriverService.CreateDefaultService(); 
     chromeDriverService.HideCommandPromptWindow = true; 
     return new ChromeDriver(chromeDriverService, new ChromeOptions()); 
+2

También puede agregar la ruta al controlador binario ChromeDriverService :: CreareDefaultService (pathToBinary); – kirsche40

Cuestiones relacionadas