如何通过命令行参数设置量角器chromeOptions

时间:2016-08-04 19:35:03

标签: javascript angularjs selenium protractor

我试图通过以下命令在我的量角器配置文件中设置chromeOptions:

protractor conf.js --capabilities.chromeOptions.args.0 start-fullscreen --capabilities.chromeOptions.args.1 display  --capabilities.chromeOptions.args.2 :99

我希望结果看起来像这样:

...
capabilities: {
  'browserName': 'chrome',
  'chromeOptions': {
    'args': ['start-fullscreen','display',':99']
  }
},
...

当我尝试运行该命令时,我在webdriver

中收到以下错误
...
Caused by: org.openqa.selenium.WebDriverException: unknown error: cannot parse capability: chromeOptions
from unknown error: cannot parse args
from unknown error: must be a list
...

我不确定如何构造我的命令行参数,以便它将args作为列表生成,或者如果功能根本不受支持。

这是一个post,其中有人尝试类似的东西,其中功能似乎被故意遗漏。但是,this post似乎暗示最近添加了该功能。

如果无法通过命令行设置,是否有解决方法?我需要更改每个量角器调用的显示,也许可以通过params在onPrepare中完成(注意:params不能在onPrepare之外的conf.js中引用)。

1 个答案:

答案 0 :(得分:3)

要传递给chromedriver的命令行参数列表可以通过将多个--capabilities.chromeOptions.args传递给protractor来构建。每个都应该跟随等号和命令行参数本身。无需在args数组中手动​​指定参数的位置。

如果命令行选项需要附加参数,则可以使用等号将其值与选项名称分开。

因此,在您的示例中,您应该使用:

protractor conf.js --capabilities.chromeOptions.args="start-fullscreen" --capabilities.chromeOptions.args="display=:99"

应该注意的是,WebdriverJS期望chromeOptions[args]是一个数组,而传递单个命令行开关会将它强制转换为字符串。这可以通过传递将被忽略的其他无效命令行开关来解决:

# This won't work
protractor conf.js --capabilities.chromeOptions.args="start-fullscreen"
# This works as expected
protractor conf.js --capabilities.chromeOptions.args="start-fullscreen" --capabilities.chromeOptions.args="fake-arg"

必须先使用该解决方法,直到issue 4050得到解决(补丁自3月开始提供,但尚未合并并发布)。