2013-04-04 8 views
5

Prowadzę testy jednostek ruby ​​przeciwko Chrome za pomocą Watir-Webdriver. Ilekroć test jest prowadzony i chromedriver.exe jest uruchomiona wynik podobny do poniżej pojawi się:Wyciszanie narzędzia ChromeDriver.exe Rejestrowanie

Started ChromeDriver 
port=9515 
version=26.0.1383.0 
log=C:\Home\Server\Test\Watir\web\chromedriver.log 
[5468:8796:0404/150755:ERROR:accelerated_surface_win.cc(208)] Reseting D3D device 
[5468:8996:0404/150758:ERROR:textfield.h(156)] NOT IMPLEMENTED 
[WARNING:..\..\..\..\flash\platform\pepper\pep_module.cpp(63)] SANDBOXED 

Żadna z tych oddziaływań prawidłowe funkcjonowanie testów, ale jak można sobie wyobrazić pojawienie się „ERROR” i „UWAGA” może być dość mylące, na przykład, parsowanie reguł w Jenkinsie w poszukiwaniu błędów. Pewnie mogę się naprawdę spodobać z wyrażeniem regularnym w regułach parsowania, ale byłoby naprawdę miło wyłączyć to pełne i niepotrzebne logowanie części chromedriver.exe. Widziałem wiele wzmianek o tym, szukając odpowiedzi. Nikt nie wymyślił rozwiązania. Tak, chromedriver prawdopodobnie ma opcję "--silent", ale wydaje się, że nie ma możliwości przekazania tego do pliku wykonywalnego. Kod podobny do poniższego ma działać, ale ma zero efektu, o ile widzę. Jakieś pomysły?

profile = Selenium::WebDriver::Chrome::Profile.new 
profile['--cant-make-any-switches-work-here-how-about-you'] = true 
browser = Watir::Browser.new :chrome, :profile => profile, :switches => %w[--ignore-certificate-errors --disable-extensions --disable-popup-blocking --disable-translate--allow-file-access] 
+0

Hi Kevin, przełącznik jest -silent i działa od cmd. Jednak nie jestem pewien, jak możesz przekazać to do swojego skryptu .. –

Odpowiedz

2

Oto pomoc dla nikogo szukasz

Znajdź ... selenium\webdriver\chrome\service.rb początek ścieżka może się różnić w systemie

I dodał: „-silent” do parametrów przekazanych .... Jednak , to uciszyło wszystko oprócz komunikatów o błędach/ostrzeżeniach.

def initialize(executable_path, port) 
     @uri   = URI.parse "http://#{Platform.localhost}:#{port}" 
     server_command = [executable_path, " -silent", "--port=#{port}"] 

     @process  = ChildProcess.build(*server_command) 
     @socket_poller = SocketPoller.new Platform.localhost, port, START_TIMEOUT 

     @process.io.inherit! if $DEBUG == true 
    end 
1

udało mi się odwrócić setek tak setki, wiadomości dziennika chrom sterowników, które były wyświetlane w ogórkowym stdout za pomocą: service_log_path argument.

@browser = Watir::Browser.new :chrome, :service_log_path => 'chromedriver.out' 

'-silent' lub '--silent' lub "-silent' lub ' --silent' parametr zasugerowano powyżej nie zrobił nic, kiedy dodałem go do ...selenium\webdriver\chrome\service.rb. A modyfikowanie samego klejnotu nie jest szczególnie realnym rozwiązaniem.

nie mogłem znaleźć miejsce do przechwytywania stderr chromedriver i odwrócić go na null (nie wspominając o konieczności obsługi robi, że w oknach oraz w * nix/OSX)

Kierowca powinien domyślnie coś drodze mniej gadatliwy. W tym przypadku INFO jest zbyt szczegółowe, ponieważ setki wpisów w dzienniku pojawiają się jako INFO, a 90% z nich jest identyczne.

Przynajmniej argument: service_log_path działa większość z nich.

0

Można spróbować -Dwebdriver.chrome.logfile="/dev/null" i/lub -Dwebdriver.chrome.args="--disable-logging" do opcji Java, który uruchamia selenium-server-standalone-what.ever.jar

2

ustawić chromeOptions z key --log-level=3 to powinno zamknąć go