Selenium:尝试获取Firefox控制台日志会导致"WebDriverError: HTTP method not allowed"



我正在尝试在我的硒测试中捕获控制台错误(使用Selenium-webdriver 4.0.0-alpha.5和最新的壁虎驱动程序和chromedriver的节点环境(。我已经为Firefox设置了一个驱动程序,为Chrome设置了一个驱动程序,如下所示:

const chrome = require('selenium-webdriver/chrome');
const firefox = require('selenium-webdriver/firefox');
const webdriver = require('selenium-webdriver');
const { Builder, By, Capabilities, until } = webdriver;
let loggingPref = new webdriver.logging.Preferences();
loggingPref.setLevel( 'browser', webdriver.logging.Level.SEVERE );
let driver_fx = await new Builder()
.withCapabilities(
Capabilities.firefox()
.set("acceptInsecureCerts", true)
)
.setLoggingPrefs( loggingPref )
.build();
let driver_chr = await new Builder()
.forBrowser('chrome')
.setLoggingPrefs( loggingPref )
.build();

这是应该获取错误日志的函数:

const getConsoleErrors = (driver) => {
return driver.manage().logs().get('browser').then((logs) => {
return logs.map(( log ) => log.message );
});
}

使用chrome驱动程序,这可以按预期工作:

await driver.get(devUrl);
let errors = await getConsoleErrors(driver_chr);
console.log(errors);
// output:
// [ 'https://mylocaldevserver/with/path 465:61 Uncaught TypeError: Cannot read property 'textContent' of null' ]

但是,当driver_fx传递给函数时,这会导致以下异常:

WebDriverError: HTTP 方法不允许在 parseHttpResponse (***ode_modules\selenium-webdriver\lib\http

.js:580:11( at Executor.execute (***ode_modules\selenium-webdriver\lib\http.js:489:26(
at process._tickCallback (internal/process/next_tick.js:68:7(

这是硒或壁虎驱动程序中的错误,还是我以不同的方式构建 Firefox 驱动程序(我需要这样做才能忽略本地开发服务器的证书(?

对于未来的谷歌员工来说,不幸的是log('browser')不在W3C规范中,因此geckodriver团队似乎正在拖延它。截至今天(2020年2月17日(,还没有官方的"修复"。

您很可能必须使用以下解决方法: https://github.com/mozilla/geckodriver/issues/284#issuecomment-477677764

在此处查找更多信息:https://github.com/mozilla/geckodriver/issues/284

最新更新