【发布时间】:2014-11-02 02:36:48
【问题描述】:
我正在尝试使用无头 Chrome 在 Vagrant VM 内运行 Protractor e2e 测试。 我设法通过使用 Xvfb 使其工作,但是当我运行测试以填写表格时出现错误:unknown error: an X display is required for keycode conversions, 请考虑使用 Xvfb
所有测试都运行良好,但只要我使用 getKeys() (例如 element(by.model('user.email')).sendKeys('admin'); )我就会收到这个错误,即使我已经使用 Xvfb。
我在跑步:
- 使用 Yeoman angular-fullstack 生成器生成的 AngularJS 示例应用
- Nodejs 版本 0.10.30,与 nvm 一起安装
- 流浪者 1.6.3
- VirtualBox 4.3.14
- 主机操作系统 Ubuntu 14.04 32 位
- 来宾操作系统 Ubuntu 14.04 32 位
- 铬 37.0.2062.94
- chromedriver 2.10.267517
我使用以下 shell 脚本来启动 Selenium 和 Xvfb:
#!/bin/sh
webdriver-manager 启动 &
Xvfb :1 -ac -screen 0 1280x1024x8 &
导出 DISPLAY=:1
我还在 /opt/google/chrome/google-chrome 中添加了“export DISPLAY=:1”。 同样,没有 sendKeys() 的测试运行良好。
到目前为止我做了什么:
- 我正在运行 32 位 Ubuntu,所以我下载了 chromedriver 2.10 32 位,但这没有帮助
- 我用 --verbose 运行 chromedriver 并检查了日志,但只显示相同的错误
- 我修改了 Xvfb 屏幕尺寸设置,也没有帮助
- 我在这里检查了一些源代码:https://github.com/bayandin/chromedriver/blob/master/keycode_text_conversion_x.cc 并在第 196 行找到了错误消息。 当命令 gfx::GetXDisplay() (第 193 行)没有获得显示对象时会触发它。我怀疑它可能只是我在 /opt/google/chrome/google-chrome 中导出的 DISPLAY 变量,但我不确定也不知道如何修复它。
我想知道如何让 sendfkeys() 在 Vagrant VM 中使用无头 Chrome。 非常感谢任何帮助。
【问题讨论】:
标签: node.js angularjs testing selenium protractor