我有问题 运行 selenium tests headless with chrome
I am having issues running selenium tests headless with chrome
我在 javascript 中使用“selenium-webdriver”:“4.0.0-alpha.7”。当我尝试 运行 我的测试用例无头地传入 .withCapabilities 时。使用 chrome 浏览器进行的测试仅 运行s 而不是无头。
我有一个 config.js 文件,看起来像这样
// filename: lib/config.js
module.exports = {
baseUrl: process.env.BASE_URL || 'https://www.mycompanyURL.com',
host: process.env.HOST || 'headless',
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"chromeOptions": {
"args": ['--headless'],
},
},
localhost: {
"browserName": process.env.BROWSER_NAME || 'chrome'
}
}
我有一个 driveFactory.js 看起来像这样
// filename: DriverFactory.js
const path = require('path')
const { Builder } = require('selenium-webdriver')
class DriverFactory {
constructor(config) {
this.config = config
}
_configure() {
let builder = new Builder()
switch (this.config.host) {
case 'localhost':
builder.withCapabilities(this.config.localhost)
break
case 'headless':
builder.withCapabilities(this.config.headless).
break
}
return builder
}
}
module.exports = DriverFactory
有谁知道为什么没有在功能中设置无头参数?
自 Selenium 4(以及 IIRC,Selenium 3 系列的一些较新版本)起,vendor-specific 参数已命名空间,in accordance with the WebDriver Spec。
现在需要在 goog
命名空间下向驱动程序提供参数,例如 goog:chromeOptions
.
一个选项
您可以用以下内容替换您的配置:
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"goog:chromeOptions": {
"args": ['--headless'],
},
},
一个更好的主意
selenium-webdriver
库有 built-in 选项,用于将 Chrome(和 Chromium,就此而言)设置为无头模式。以这种方式做事意味着您不必跟踪所需的参数值,并且 IMO 更简洁。
只需更新您的 driverFactory:
case "headless":
builder.withCapabilities(this.config.headless)
.setChromeOptions(new chrome.Options().headless());
break;
我在 javascript 中使用“selenium-webdriver”:“4.0.0-alpha.7”。当我尝试 运行 我的测试用例无头地传入 .withCapabilities 时。使用 chrome 浏览器进行的测试仅 运行s 而不是无头。
我有一个 config.js 文件,看起来像这样
// filename: lib/config.js
module.exports = {
baseUrl: process.env.BASE_URL || 'https://www.mycompanyURL.com',
host: process.env.HOST || 'headless',
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"chromeOptions": {
"args": ['--headless'],
},
},
localhost: {
"browserName": process.env.BROWSER_NAME || 'chrome'
}
}
我有一个 driveFactory.js 看起来像这样
// filename: DriverFactory.js
const path = require('path')
const { Builder } = require('selenium-webdriver')
class DriverFactory {
constructor(config) {
this.config = config
}
_configure() {
let builder = new Builder()
switch (this.config.host) {
case 'localhost':
builder.withCapabilities(this.config.localhost)
break
case 'headless':
builder.withCapabilities(this.config.headless).
break
}
return builder
}
}
module.exports = DriverFactory
有谁知道为什么没有在功能中设置无头参数?
自 Selenium 4(以及 IIRC,Selenium 3 系列的一些较新版本)起,vendor-specific 参数已命名空间,in accordance with the WebDriver Spec。
现在需要在 goog
命名空间下向驱动程序提供参数,例如 goog:chromeOptions
.
一个选项
您可以用以下内容替换您的配置:
headless: {
"browserName": process.env.BROWSER_NAME || 'chrome'
"goog:chromeOptions": {
"args": ['--headless'],
},
},
一个更好的主意
selenium-webdriver
库有 built-in 选项,用于将 Chrome(和 Chromium,就此而言)设置为无头模式。以这种方式做事意味着您不必跟踪所需的参数值,并且 IMO 更简洁。
只需更新您的 driverFactory:
case "headless":
builder.withCapabilities(this.config.headless)
.setChromeOptions(new chrome.Options().headless());
break;