2016-12-29 39 views
7

Używam: wersjaJak wyłączyć logowanie Firefoksa w Selenie przy użyciu Geckodriver?

  • Firefox 50.1.0
  • wersja geckodriver 0.11.1
  • selen-java 3.0.1

Próbowałem

FirefoxProfile profile = new FirefoxProfile(); 
profile.setPreference("webdriver.log.browser.ignore", true); 
profile.setPreference("webdriver.log.driver.ignore", true); 
profile.setPreference("webdriver.log.profiler.ignore", true); 
FirefoxDriver driver = new FirefoxDriver(); 

i

LoggingPreferences preferences = new LoggingPreferences(); 
preferences.enable(LogType.BROWSER, Level.OFF); 
preferences.enable(LogType.CLIENT, Level.OFF); 
preferences.enable(LogType.DRIVER, Level.OFF); 
preferences.enable(LogType.PERFORMANCE, Level.OFF); 
preferences.enable(LogType.SERVER, Level.OFF); 
DesiredCapabilities capabilities = DesiredCapabilities.firefox(); 
capabilities.setCapability(CapabilityType.LOGGING_PREFS, preferences); 
FirefoxDriver driver = new FirefoxDriver(capabilities); 

żadna z tych metod nie powoduje zatrzymania rejestrowania. Oto wyjście konsola czy to pomaga w jakiś sposób:

Dla tych, zastanawiając się, mam log4j 1.2.17 w moim pom.xml ale nie mają log4j.properties lub log4j.xml i nie używam go w ogóle.


Aby wyjaśnić: kiedy mówię logowania, mam na myśli wyjście konsoli w IntelliJ IDEA. Używam Java.

+0

Dlaczego używasz geckodriver? Jest potrzebny w Firefoksie? no dobra, jest nowa w selen 3 –

+0

Jeśli się nie mylę, Geckodriver jest potrzebny do Firefoksa z selenem 3.0.0 i wyższym – PizzaFrog

Odpowiedz

6

Możesz zdefiniować wymagany poziom logowania przez linię poleceń w geckodriver.exe.

geckodriver.exe -help  
USAGE: 
    geckodriver.exe [FLAGS] [OPTIONS] 
... 
OPTIONS: 
     --log <LEVEL> 
      Set Gecko log level [values: fatal, error, warn, info, config, 
      debug, trace] 

Jeśli używasz geckodriver z selenem, masz dwie możliwości:

  • start geckodriver.exe osobno z własnych argumentów i używać go z selenem nad RemoteWebDriver
  • Tworzenie niestandardowego opakowania, aby dodać dodatkowe parametry geckodriver.exe

Przykład geckodriver plik owijka bat (dla Windows)

@ECHO OFF 
ECHO Starting geckodriver: %0 %* 
.\GeckoDriver\geckodriver.exe --log fatal %* > NUL 2>&1 

w Javie można zdefiniować geckodriver wykonywalny ścieżki, nad webdriver.gecko.driver właściwość systemu:

System.setProperty("webdriver.gecko.driver", "c:/selenium/geckodriver/gdrvwrapper.bat"); 
+0

To zadziałało jak dla mnie urok. Bardzo miło –

+0

Poszedłem z tą odpowiedzią, ale ustawienie poziomu logowania nie zrobiło nic dla mnie na Linuksie. To zadziałało, ponieważ wynik jest przekierowany do wartości null. Możesz spróbować tego, nie dodając> NUL 2> i części. Dodałem wersję linuksową poniżej – mancocapac

+0

Czy plik nietoperza jest nadal potrzebny? czy jest jakiś sposób, aby to zrobić programowo? – Arya

0
GeckoDriverService gecko = new GeckoDriverService(new File("c:/selenium/geckodriver.exe"), 4444, ImmutableList.of("--log=fatal"), ImmutableMap.of()); 
    gecko.sendOutputTo(new FileOutputStream("gecko_log.txt")); 
    gecko.start(); 

    FirefoxOptions opts = new FirefoxOptions().setLogLevel(Level.OFF); 
    DesiredCapabilities capabilities = opts.addTo(DesiredCapabilities.firefox()); 
    capabilities.setCapability("marionette", true); 
    driver = new FirefoxDriver(gecko, capabilities); 
+0

powoduje to błąd. – vaibhavcool20

0

To jest wersja linux dla @voji odpowiedzieć powyżej. Uwaga jak wspomniałem powyżej w komentarzu. Nie wierzę, że --log fatal robi cokolwiek, przynajmniej nie na Linuksie. jednak przekierowanie na NULL działa wystarczająco dobrze dla mnie

"webdriver.gecko.driver": "/path-to-driver/geckodriver.sh 

pliku: geckodriver.sh (wykonywalny)

#! /bin/bash 
echo " ARGS: " [email protected] 
geckodriver --log fatal "[email protected]" > /dev/null 2>&1 
6

nie zobaczyć dzienniki w konsoli można użyć następujących:

System.setProperty("webdriver.gecko.driver","src/main/resources/drivers/geckodriver.exe"); 
System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true"); 
System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null"); 

return new FirefoxDriver(); 
0

Wystarczy zrobić to System.setProperty (FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE "true") ; System.setProperty (FirefoxDriver.SystemProperty.BROWSER_LOGFILE, "/ dev/null"); sterownik = nowy FirefoxDriver();