使用没有Firefox扩展的Selenium从Firefox 43检索控制台日志

时间:2015-12-23 14:08:41

标签: javascript java firefox selenium console.log

是否可以使用Selenium和Firefox 43检索浏览器console.log?如果是这样,怎么样?

以下是我的设置:

DesiredCapabilities capabilities = DesiredCapabilities.firefox();
LoggingPreferences logs = new LoggingPreferences();
logs.enable(LogType.BROWSER, Level.ALL);
logs.enable(LogType.DRIVER, Level.ALL);
logs.enable(LogType.CLIENT, Level.ALL);
logs.enable(LogType.PERFORMANCE, Level.ALL);
logs.enable(LogType.PROFILER, Level.ALL);
logs.enable(LogType.SERVER, Level.ALL);
capabilities.setCapability(CapabilityType.LOGGING_PREFS, logs);

FirefoxBinary binary = new FirefoxBinary(new File(...));
FirefoxProfile profile = new FirefoxProfile();
WebDriver driver = new FirefoxDriver(binary, profile, capabilities);

//...doing things with the driver ...

driver.manage().logs().get(LogType.BROWSER) // already tried every LogType

我从中获得的唯一输出是:

1450878255029   addons.xpi  DEBUG   startup
...
Error in parsing value for 'display'.  Declaration dropped.

但不是在浏览器javascript控制台日志中写的输出。

我已经尝试了几个FF配置文件设置,如:

profile.setPreference("extensions.sdk.console.logLevel", "all");
profile.setPreference("webdriver.log.file",tempfile.getAbsolutePath());
profile.setPreference("webdriver.firefox.logfile", othertempfile.getAbsolutePath());
profile.setPreference("webdriver.log.driver", "ALL");

到目前为止没有任何帮助。 在Chrome中,这是完美无瑕的。

Selenium版本:2.48.2 Firefox版本:43.0.2

1 个答案:

答案 0 :(得分:2)

我有同样的问题。我只得到关于css,安全性,网络的所有日志噪声,但不是,但不是应用程序通过console.log实际记录的内容。我使用的是webdriver和firefox的相同版本。对于其他浏览器,这不是问题。

我最终使用自定义日志记录扩展了我的客户端代码。用线协议术语说:

  • 使用execute将类似以下内容放入客户端
window.recordedLogs = [];

console.log = function (message) {

    if (typeof message === 'object') {
        message = JSON.stringify(message);
    }

    window.recordedLogs.push(message);
};
  • 使用execute检索window.recordedLogs

警告:上面的代码非常简单,它不会处理传递给日志方法的多个消息,也不会处理其他日志方法,如信息,错误等。

然而,它可以是一种良好的多浏览器兼容的有线协议log方法。