wdio chrome headless 不是 运行 headless
wdio chrome headless is not running headlessly
Headless chrome 对我来说似乎不是无头的。我正在使用 wdio 并将其作为我的配置:
capabilities: [
{
// maxInstances can get overwritten per capability. So if you have an in-house Selenium
// grid with only 5 firefox instances available you can make sure that not more than
// 5 instances get started at a time.
maxInstances: 5,
//
browserName: 'chrome',
args: ['--headless', '--disable-gpu', '--window-size=1280,800'],
binary: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
}
]
我还在浏览器启动之前输出功能:
{
"maxInstances": 5,
"browserName": "chrome",
"args": [
"--headless",
"--disable-gpu",
"--window-size=1280,800"
],
"binary": "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
}
我的 chrome 浏览器正在启动,我可以看到 webdriver 正在驱动测试。我有很多帖子都是以这种方式进行的,而且应该可以正常工作。我错过了什么?
更新
我修改了从环境变量中读取的功能。如果我使用 BROWSER=chrome,我会看到正确的功能通过并且浏览器在 chrome 中启动。如果我使用 BROWSER=firefox,firefox 会打开并且我会看到适当的功能。如果我不使用任何东西,我会看到适当的功能,chrome 打开,但它不是无头的。
const CHROME = {
browserName: 'chrome',
};
const FIREFOX = {
browserName: 'firefox',
};
const CHROME_HEADLESS = {
browserName: 'chrome',
args: ['headless', 'disable-gpu']
};
function getCapabilities() {
let browser;
switch(process.env.BROWSER && process.env.BROWSER.toLowerCase()) {
case 'chrome':
browser = CHROME;
break;
case 'firefox':
browser = FIREFOX;
break;
default:
browser = CHROME_HEADLESS;
break;
}
return [Object.assign({maxInstances: 5}, browser)];
}
https://gist.github.com/disintegrator/ff6e9341860e9b121099c71bc9381bd6
拥有 chrome 选项中的功能。
对我来说效果很好。
capabilities: [
{
browserName: 'chrome',
chromeOptions: {
args: ['headless', 'disable-gpu'],
},
},
],
为了配合接受的答案,在较新版本的 Selenium(3.8 及更高版本)中,您可能必须将 chromeOptions
指定为 "goog:chromeOptions"
Headless chrome 对我来说似乎不是无头的。我正在使用 wdio 并将其作为我的配置:
capabilities: [
{
// maxInstances can get overwritten per capability. So if you have an in-house Selenium
// grid with only 5 firefox instances available you can make sure that not more than
// 5 instances get started at a time.
maxInstances: 5,
//
browserName: 'chrome',
args: ['--headless', '--disable-gpu', '--window-size=1280,800'],
binary: '/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome'
}
]
我还在浏览器启动之前输出功能:
{
"maxInstances": 5,
"browserName": "chrome",
"args": [
"--headless",
"--disable-gpu",
"--window-size=1280,800"
],
"binary": "/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome"
}
我的 chrome 浏览器正在启动,我可以看到 webdriver 正在驱动测试。我有很多帖子都是以这种方式进行的,而且应该可以正常工作。我错过了什么?
更新
我修改了从环境变量中读取的功能。如果我使用 BROWSER=chrome,我会看到正确的功能通过并且浏览器在 chrome 中启动。如果我使用 BROWSER=firefox,firefox 会打开并且我会看到适当的功能。如果我不使用任何东西,我会看到适当的功能,chrome 打开,但它不是无头的。
const CHROME = {
browserName: 'chrome',
};
const FIREFOX = {
browserName: 'firefox',
};
const CHROME_HEADLESS = {
browserName: 'chrome',
args: ['headless', 'disable-gpu']
};
function getCapabilities() {
let browser;
switch(process.env.BROWSER && process.env.BROWSER.toLowerCase()) {
case 'chrome':
browser = CHROME;
break;
case 'firefox':
browser = FIREFOX;
break;
default:
browser = CHROME_HEADLESS;
break;
}
return [Object.assign({maxInstances: 5}, browser)];
}
https://gist.github.com/disintegrator/ff6e9341860e9b121099c71bc9381bd6
拥有 chrome 选项中的功能。
对我来说效果很好。
capabilities: [
{
browserName: 'chrome',
chromeOptions: {
args: ['headless', 'disable-gpu'],
},
},
],
为了配合接受的答案,在较新版本的 Selenium(3.8 及更高版本)中,您可能必须将 chromeOptions
指定为 "goog:chromeOptions"