在没有 Firefox 扩展的情况下使用 Selenium 从 Firefox 43 检索控制台日志
Retrieving console log from Firefox 43 with Selenium without Firefox extensions
是否可以使用 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 中,这是完美的。
硒版本:2.48.2
Firefox 版本:43.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
警告:上面的代码非常简单,它没有处理传递给日志方法的多条消息,也没有处理其他日志方法,如信息、错误等。
然而,它可以很好地 multi-browser-compliant 替代有线协议 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 中,这是完美的。
硒版本:2.48.2 Firefox 版本:43.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
警告:上面的代码非常简单,它没有处理传递给日志方法的多条消息,也没有处理其他日志方法,如信息、错误等。
然而,它可以很好地 multi-browser-compliant 替代有线协议 log
方法。