2012-07-16 4 views
9

Stworzyłem odtwarzacz, który zautomatyzuje chromowanie za pomocą selenu i ChromeDriver w języku C#. Działa dobrze.Aplikacja konsoli ChromeDriver ukryj

Problem, przed którym stoję, gdy tworzy obiekt dla ChromDriver, uruchomi aplikację ChromeDriver, która wyświetli się, a następnie załaduje się Chrome. Jest doskonały, ponieważ ta aplikacja ładuje dla mnie ten chrom.

Czy mimo to mogę otworzyć ukrytą ChromeDriver?

+0

To oprogramowanie jest przeznaczone do testowania. Pod tym względem okno konsoli jest mile widziane. Nie jestem pewien, do czego używasz tego, ale wygląda na to, że nie jest to testowanie. Może istnieć lepsze rozwiązanie podstawowego problemu, na przykład wywołanie API bezpośrednio, zamiast przechodzenia przez przeglądarkę. –

Odpowiedz

6

Tak, potrzebujesz zmodyfikować kod źródłowy w WebDriver \ DriverService.cs w Start(); dodaj:

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

Strzeż się tego, nie używając pełnego procesu kompilacji dla projektu Selenium. Po prostu budowanie w Visual Studio nie da ci ekwiwalentnego zestawu do tego wygenerowanego przez skrypt budujący projekt Selenium. – JimEvans

12

Nie, nie ma możliwości ukrycia okna konsoli programu chromeedriver.exe w powiązaniach .NET bez modyfikowania kodu źródłowego powiązań. Jest to postrzegane jako cecha powiązań, ponieważ bardzo łatwo jest zobaczyć, kiedy twój kod nie wyczyścił poprawnie zasobów ChromeDriver, ponieważ okno konsoli pozostaje otwarte. W przypadku niektórych innych języków, jeśli twój kod nie oczyści poprawnie instancji ChromeDriver, wywołując metodę quit() w obiekcie WebDriver, możesz zakończyć proces zombie chromedriver.exe uruchomiony na twoim komputerze.

+8

Wow, poważnie, downwice? Tylko dlatego, że odpowiedź nie jest tym, co chcesz usłyszeć, nie oznacza, że ​​jest to zła lub zła odpowiedź. Mogę zagwarantować, że ta odpowiedź jest całkowicie poprawna pod każdym względem, w tym spekulacje co do zamiarów autorów (tak jak ja jestem autorem). – JimEvans

+0

Witaj @JimEvans - Naprawdę mam odwrotny problem na jednym z moich komputerów. Ten komputer ukrywa wszystkie okna konsoli IEDriverServer i ChromeDriver i nie wiem dlaczego. Kod nie ma żadnej z tych konkretnych opcji, a okna są widoczne, gdy kod jest uruchamiany na innych komputerach. Jakiś wgląd? Dzięki! – AngieM

+0

@AngieM Czy korzystasz z powiązań języka .NET? Jeśli nie, informacje w tym pytaniu nie dotyczą Ciebie. Inne języki (Python, Ruby, Java) mogą nie dać Ci żadnej kontroli nad tym, czy pojawi się osobne okno wiersza polecenia. – JimEvans

26

Modyfikacja kodu źródłowego w WebDriver \ DriverService.cs nie jest konieczna w najnowszym WebDriver. Musisz tylko utworzyć instancję ChromeDriverService i ustawić HideCommandPromptWindow na true, a następnie utworzyć ChromeDriver przez tę usługę i ChromeOptions. Podaję przykład kodu C# poniżej

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

Można również dodać ścieżkę do sterownika binarnego ChromeDriverService :: CreareDefaultService (pathToBinary); – kirsche40