2012-07-16 17 views
9

Ho creato un lettore che automatizzerà chrome utilizzando selenio e ChromeDriver in C#. Funziona bene.Applicazione console ChromeDriver nascondi

Emettere ciò che sto affrontando è, quando crea un oggetto per ChromDriver, avvierà l'applicazione ChromeDriver, che verrà visualizzata e quindi verrà caricato Chrome. È perfetto perché quell'applicazione sta caricando quel cromo per me.

Esiste comunque la possibilità di aprire ChromeDriver nascosto?

+0

Questo software è significato per il test. E a questo proposito, una finestra di console è una cosa gradita. Non sono sicuro di cosa stai usando, ma sembra che non stia testando. Potrebbe esserci una soluzione migliore al tuo problema di fondo, come effettuare direttamente chiamate API invece di passare attraverso un browser. –

risposta

6

Sì, è necessario modificare il codice sorgente in WebDriver \ DriverService.cs in Start(); aggiungi:

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

Fare attenzione a ciò senza utilizzare il processo di compilazione completo per il progetto Selenium. La semplice creazione in Visual Studio non fornirà un assembly equivalente a quello generato dallo script di build del progetto Selenium. – JimEvans

12

No, non è possibile nascondere la finestra della console di chromedriver.exe nei collegamenti .NET senza modificare il codice sorgente dei binding. Questo è visto come una caratteristica dei binding, in quanto rende molto facile vedere quando il codice non ha ripulito correttamente le risorse del ChromeDriver, poiché la finestra della console rimane aperta. Nel caso di alcune altre lingue, se il tuo codice non ripulisce correttamente l'istanza di ChromeDriver chiamando il metodo quit() sull'oggetto WebDriver, puoi finire con un processo zombie chromedriver.exe in esecuzione sul tuo computer.

+8

Wow, seriamente, downvoters? Solo perché una risposta non è ciò che vuoi sentire, non la rende una risposta errata o una cattiva risposta. Posso garantire che questa risposta sia completamente corretta sotto ogni aspetto, compresa la speculazione sull'intento degli autori (come sono l'autore). – JimEvans

+0

Ciao @JimEvans - In realtà sto avendo un problema inverso su uno dei miei computer. Questo computer nasconde tutte le finestre della console di IEDriverServer e ChromeDriver e non so perché. Il codice non ha nessuna di queste opzioni specifiche e le finestre sono visibili quando il codice viene eseguito su altri computer. Qualche intuizione? Grazie! – AngieM

+0

@AngieM Stai utilizzando i collegamenti del linguaggio .NET? In caso contrario, le informazioni in questa domanda non si applicano a voi. Altri linguaggi (Python, Ruby, Java) potrebbero non fornire alcun controllo su tutto se viene visualizzata una finestra del prompt dei comandi separata. – JimEvans

26

La modifica del codice sorgente in WebDriver \ DriverService.cs non è necessaria per questo nell'ultimo WebDriver. Devi solo creare un'istanza di ChromeDriverService e impostare HideCommandPromptWindow su true, quindi istanziare ChromeDriver da quel servizio e ChromeOptions. Sto dando C# esempio di codice qui sotto

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

È inoltre possibile aggiungere il percorso al driver binario ChromeDriverService :: CreareDefaultService (pathToBinary); Il collegamento – kirsche40

Problemi correlati