javascript - 如何通过命令行参数设置 Protractor chromeOptions

标签 javascript angularjs selenium protractor

我正在尝试通过以下命令在我的 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似乎暗示该功能是最近添加的。

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

最佳答案

要传递给 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月份开始可用,但尚未合并发布)。

关于javascript - 如何通过命令行参数设置 Protractor chromeOptions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38775964/

相关文章:

javascript - 从 'onclick' 部分值中查找并单击一个项目

javascript - dc.js 更改分区图中未定义数据的默认颜色

javascript - 用 Promise 修改状态

javascript - 按回车键打开弹出窗口

javascript - 如何使用 AngularJS 将值动态绑定(bind)到链接

python - Selenium xpath all (//*) 不采用每个 css 元素

javascript - 如何在 D3 图表的标签中包含换行符?

javascript - AngularJS 动画中的完成回调

node.js - $resource.query() 参数无法到达服务器

java - Selenium (WebDriver) Junit 4 在窗口之间切换问题