修改Selenium Firefox驱动程序的日志记录级别?

时间:2017-08-04 19:28:29

标签: java selenium firefox

我正在使用Selenium 3.4和FirefoxDriver(而不是Marionette / Geckodriver)运行Java / Maven项目的测试。我安装了Firefox 45.9.0。我们的测试代码使用Log4j2,我可以将日志记录级别设置为我喜欢的任何内容,但无论我将其设置为什么,我都会在控制台中收到这样的日志消息:

1501873908911   addons.manager  DEBUG   Application has been upgraded
1501873909216   addons.manager  DEBUG   Loaded provider scope for resource://gre/modules/addons/XPIProvider.jsm: ["XPIProvider"]
1501873909218   addons.manager  DEBUG   Loaded provider scope for resource://gre/modules/LightweightThemeManager.jsm: ["LightweightThemeManager"]
1501873909220   addons.manager  DEBUG   Loaded provider scope for resource://gre/modules/addons/GMPProvider.jsm
1501873909221   addons.manager  DEBUG   Loaded provider scope for resource://gre/modules/addons/PluginProvider.jsm
1501873909221   addons.manager  DEBUG   Starting provider: XPIProvider
1501873909221   addons.xpi  DEBUG   startup
1501873909222   addons.xpi  INFO    Mapping fxdriver@googlecode.com to C:\TMP\anonymous3169069284131523935webdriver-profile\extensions\fxdriver@googlecode.com
1501873909222   addons.xpi  DEBUG   Ignoring file entry whose name is not a valid add-on ID: C:\TMP\anonymous3169069284131523935webdriver-profile\extensions\webdriver-staging
1501873909223   addons.xpi  INFO    SystemAddonInstallLocation directory is missing
1501873909224   addons.xpi  INFO    Mapping loop@mozilla.org to C:\Program Files (x86)\Mozilla Firefox\browser\features\loop@mozilla.org.xpi
1501873909226   addons.xpi  INFO    Mapping {972ce4c6-7e08-4474-a285-3208198ce6fd} to C:\Program Files (x86)\Mozilla Firefox\browser\extensions\{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
1501873909226   addons.xpi  DEBUG   Skipping unavailable install location app-system-share
1501873909226   addons.xpi  DEBUG   Skipping unavailable install location app-system-local

无论我将日志记录级别设置为什么,FirefoxDriver内部或Firefox本身内部的内容都会以DEBUG级别登录。

我查看了this question,但我无法弄清楚如何将Python答案翻译成我们的Java代码:

示例Python:

import logging
from selenium.webdriver.remote.remote_connection import LOGGER
LOGGER.setLevel(logging.WARNING)

我们的Java代码:

DesiredCapabilities capability = DesiredCapabilities.firefox();
FirefoxProfile profile=new FirefoxProfile();
capability.setCapability(FirefoxDriver.PROFILE, profile);
mDriver = new FirefoxDriver(capability);

我尝试了几种排列,但似乎没有任何影响这种日志记录 - 这些消息无论如何都出现在控制台中。有人有办法控制这个日志记录吗?

2 个答案:

答案 0 :(得分:2)

这些日志来自selenium库,如果你不想看到它=>通过仅在包中声明记录范围或将其关闭来关闭它。

例如,您只想从代码中获取日志消息,代码的根软件包是:com.example.mycode然后打开log4j配置文件并添加:log4j.logger.com.example.mycode = DEBUG|INFO

或者您只能关闭来自硒的记录:java.util.logging.Logger.getLogger("org.openqa.selenium").setLevel(Level.OFF);

答案 1 :(得分:1)

对不起,我想挖一个旧线程,但只想提供一个更新的解决方案(撰写本文时,最新驱动程序版本为0.23.0)。

官方文档:https://firefox-source-docs.mozilla.org/testing/geckodriver/geckodriver/TraceLogs.html

这是上面的文档中的Java示例。 您可以通过将日志记录级别包含在.setLogLevel类的FirefoxOptions方法中来指定日志记录级别。

FirefoxOptions options = new FirefoxOptions();
options.setLogLevel(FirefoxDriverLogLevel.TRACE);
WebDriver driver = new FirefoxDriver(options);

您可以参考文档来了解不同级别的日志记录。

相关问题