量angular器sendkeys不起作用:键码转换需要x显示

我正在尝试使用无头Chrome在Vagrant虚拟机内运行量angular器e2etesting。 我设法使用Xvfb工作,但是当我运行一个testing来填充表单时,我得到一个错误: 未知的错误:X代码转换需要X显示,考虑使用Xvfb

所有的testing运行良好,但只要我使用getKeys()(例如元素(by.model('user.email'))。sendKeys('admin');)我得到这个错误,即使我已经使用Xvfb。

我在跑:

  • AngomanJS示例应用程序与Yeoman angular-fullstack生成器一起生成
  • Nodejs版本0.10.30,与nvm一起安装
  • stream浪者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

我还添加了“export DISPLAY =:1”到/ opt / google / chrome / google-chrome。 同样,没有sendKeys()的testing运行良好。

我到目前为止所做的:

  • 我正在运行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中导出的DISPLAYvariables,但是我不确定,也不知道如何解决这个问题。

我想知道我如何能得到一个Vagrant虚拟机内的无头Chrome浏览器的sendfkeys()。 任何帮助是极大的赞赏。

确保seleniumAddress:'http:// localhost:4444 / wd / hub'匹配你的selenium服务器,并避免设置chromeOnly因为这将有效地避免使用无头selenium服务器。

另外,Xvfb需要在webdriver-manager之前运行,并且你错过了xvfb-run因为你似乎需要为你执行X权限跳舞 :

 #!/bin/sh export DISPLAY=:1 Xvfb $DISPLAY -ac -screen 0 1280x1024x8 & sleep 1 xvfb-run webdriver-manager start & 

如果你有兴趣,我已经安装了一个无头的基于Docker的解决scheme,可选的VNC访问加上video录制: https : //github.com/elgalu/docker-selenium