将 chromeOptions 参数传递给 Linux 上的 .json 文件中的 selenium 节点
Passing chromeOptions args to the selenium node in .json file on Linux
我正在尝试使用以下配置创建节点:
java -Dwebdriver.chrome.driver=/randomfolder/chromedriver -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig node-conf.json
如您所见,我正在 json 文件中传递配置。它正确地设置了配置,除了 chrome 选项。我需要 chrome 才能无头打开。这是我的 .json 文件的一部分,它设置了功能。
"capabilities": [
{
"browserName":"chrome",
"maxInstances":3,
"version":"ServerLinux",
"platform":"LINUX",
"chromeOptions": {
"args": ["--headless", "--disable-gpu" , "--window-size=1920x1080", "--no-sandbox"]
}
}
]
我尝试了不同的方式来编写 chrome 选项,但节点总是忽略它们。我只是瞎了,看不到我的错误吗?
提前致谢!
我也面临这个问题,但就我而言,我想修改用户代理,而在 Linux 上,chromeOptions 似乎被忽略了。这在 Mac/Chrome.
本地为我工作
//wdio.conf.js
capabilities: [{
browserName: "chrome",
chromeOptions : {
args : ['--user-agent=THIS_IS_A_TEST']
}
}],
//Jenkins job on Linux RHEA
13:42:33 [11/10/2018 13:42:33.049] [LOG] browser.desiredCapabilities = {
13:42:33 "javascriptEnabled": true,
13:42:33 "locationContextEnabled": true,
13:42:33 "handlesAlerts": true,
13:42:33 "rotatable": true,
13:42:33 "browserName": "chrome",
13:42:33 "acceptInsecureCerts": true,
13:42:33 "chromeOptions": {
13:42:33 "args": [
13:42:33 "--user-agent=THIS_IS_A_TEST",
13:42:33 "window-size=1600,1200"
13:42:33 ]
13:42:33 },
13:42:33 "loggingPrefs": {
13:42:33 "browser": "ALL",
13:42:33 "driver": "ALL"
13:42:33 }
13:42:33 }
13:42:33 [11/10/2018 13:42:33.072] [LOG] printNavigatorUserAgent() navigator.userAgent = Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36
预期:printNavigatorUserAgent() navigator.userAgent = THIS_IS_A_TEST
printNavigatorUserAgent(){
let result = browser.execute(function() {
return navigator.userAgent;
},);
console.log(`printNavigatorUserAgent() navigator.userAgent = ${result.value}`);
}
更新:以下语法目前适用于我 Linux/chrome。
//wdio.conf.js
capabilities: [{
browserName: "chrome",
"goog:chromeOptions" : {
"args" : ['user-agent=THIS_IS_A_TEST']
}
}],
“尝试并猜测”正确的 JSON 语法非常耗时,而且架构可能会发生变化。最安全的选择是为您选择的语言选择 API,然后选择 assemble 并自己生成 JSON。确保选择与您定位的 Selenium 站点和堆栈相匹配的版本。
示例Python:
from selenium.webdriver.chrome.options import Options as ChromeOptions
options = ChromeOptions()
options.add_argument('--incognito')
options.to_capabilities()
这看起来像:
{
'browserName': 'chrome',
'version': '',
'platform': 'ANY',
'goog:chromeOptions': {
'extensions': [],
'args': ['--incognito']
}
}
最后一点,如果您的网站引入了自己的功能列表,这个覆盖和那个可能会合并,所以引入您的增量只是为了避免意外。
我正在尝试使用以下配置创建节点:
java -Dwebdriver.chrome.driver=/randomfolder/chromedriver -jar selenium-server-standalone-3.4.0.jar -role node -nodeConfig node-conf.json
如您所见,我正在 json 文件中传递配置。它正确地设置了配置,除了 chrome 选项。我需要 chrome 才能无头打开。这是我的 .json 文件的一部分,它设置了功能。
"capabilities": [
{
"browserName":"chrome",
"maxInstances":3,
"version":"ServerLinux",
"platform":"LINUX",
"chromeOptions": {
"args": ["--headless", "--disable-gpu" , "--window-size=1920x1080", "--no-sandbox"]
}
}
]
我尝试了不同的方式来编写 chrome 选项,但节点总是忽略它们。我只是瞎了,看不到我的错误吗? 提前致谢!
我也面临这个问题,但就我而言,我想修改用户代理,而在 Linux 上,chromeOptions 似乎被忽略了。这在 Mac/Chrome.
本地为我工作//wdio.conf.js
capabilities: [{
browserName: "chrome",
chromeOptions : {
args : ['--user-agent=THIS_IS_A_TEST']
}
}],
//Jenkins job on Linux RHEA
13:42:33 [11/10/2018 13:42:33.049] [LOG] browser.desiredCapabilities = {
13:42:33 "javascriptEnabled": true,
13:42:33 "locationContextEnabled": true,
13:42:33 "handlesAlerts": true,
13:42:33 "rotatable": true,
13:42:33 "browserName": "chrome",
13:42:33 "acceptInsecureCerts": true,
13:42:33 "chromeOptions": {
13:42:33 "args": [
13:42:33 "--user-agent=THIS_IS_A_TEST",
13:42:33 "window-size=1600,1200"
13:42:33 ]
13:42:33 },
13:42:33 "loggingPrefs": {
13:42:33 "browser": "ALL",
13:42:33 "driver": "ALL"
13:42:33 }
13:42:33 }
13:42:33 [11/10/2018 13:42:33.072] [LOG] printNavigatorUserAgent() navigator.userAgent = Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.92 Safari/537.36
预期:printNavigatorUserAgent() navigator.userAgent = THIS_IS_A_TEST
printNavigatorUserAgent(){
let result = browser.execute(function() {
return navigator.userAgent;
},);
console.log(`printNavigatorUserAgent() navigator.userAgent = ${result.value}`);
}
更新:以下语法目前适用于我 Linux/chrome。
//wdio.conf.js
capabilities: [{
browserName: "chrome",
"goog:chromeOptions" : {
"args" : ['user-agent=THIS_IS_A_TEST']
}
}],
“尝试并猜测”正确的 JSON 语法非常耗时,而且架构可能会发生变化。最安全的选择是为您选择的语言选择 API,然后选择 assemble 并自己生成 JSON。确保选择与您定位的 Selenium 站点和堆栈相匹配的版本。
示例Python:
from selenium.webdriver.chrome.options import Options as ChromeOptions
options = ChromeOptions()
options.add_argument('--incognito')
options.to_capabilities()
这看起来像:
{
'browserName': 'chrome',
'version': '',
'platform': 'ANY',
'goog:chromeOptions': {
'extensions': [],
'args': ['--incognito']
}
}
最后一点,如果您的网站引入了自己的功能列表,这个覆盖和那个可能会合并,所以引入您的增量只是为了避免意外。