如何使用Geckodriver禁用Selenium中的Firefox日志记录?
我在用:
- firefox版本50.1.0
- geckodriver版本0.11.1
- selenium-java 3.0.1
我努力了
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();
和
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);
这些方法都没有做任何事情来阻止记录。 如果这有助于某种方式,这是控制台输出:
- 第一种方法: http : //pastebin.com/23nate2G
- 第二种方法: http : //pastebin.com/NwmWEeXT
对于那些想知道的人,我在我的pom.xml
有log4j 1.2.17,但没有log4j.properties
或log4j.xml
,我根本不使用它。
澄清一下:当我说日志记录时,我指的是IntelliJ IDEA中的控制台输出。 我正在使用Java。
要在控制台中看不到日志,可以使用以下命令:
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();
您可以在geckodriver.exe中通过命令行定义所需的日志记录级别。
geckodriver.exe -help USAGE: geckodriver.exe [FLAGS] [OPTIONS] ... OPTIONS: --log Set Gecko log level [values: fatal, error, warn, info, config, debug, trace]
如果你使用selenium的geckodriver,你有两个选择:
- 使用自定义参数分别启动geckodriver.exe,并通过RemoteWebDriver从selenium中使用它
- 创建自定义包装器,以向geckodriver.exe添加额外的参数
示例geckodriver包装器bat文件(用于Windows):
@ECHO OFF ECHO Starting geckodriver: %0 %* .\GeckoDriver\geckodriver.exe --log fatal %* > NUL 2>&1
在java中,您可以通过webdriver.gecko.driver系统属性定义geckodriver可执行路径:
System.setProperty("webdriver.gecko.driver", "c:/selenium/geckodriver/gdrvwrapper.bat");
就这样做吧
System.setProperty(FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,"true"); System.setProperty(FirefoxDriver.SystemProperty.BROWSER_LOGFILE,"/dev/null"); driver = new FirefoxDriver();
这是@voji上面的linux版本的答案。 注意,正如我在评论中所述。 我不相信–log致命任何事情,至少在Linux上没有。 但是重定向到NULL对我来说效果很好
"webdriver.gecko.driver": "/path-to-driver/geckodriver.sh
文件名:geckodriver.sh(可执行文件)
#! /bin/bash echo " ARGS: " $@ geckodriver --log fatal "$@" > /dev/null 2>&1
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);
- Selenium在一台计算机上发生了“UnreachableBrowserException / Address has in use”
- 如何使用FirefoxProfile通过Firefox浏览器自动下载?
- 如何在Java applet中正确指定代码库和存档?
- Firefox错误:使用Java启动Selenium 3.0.1驱动程序时“您的连接不安全”
- Selenium / Firefox:命令“.click()”不适用于找到的元素
- 使用Selenium在FireFox中设置首选项时出现mime类型问题
- 如何使用Geckodriver保留我的Firefox配置文件缓存?
- 用于保存文件的Selenium firefox配置文件
- 在selenium中绕过capcha