【问题标题】:How to do headless protractor/jasmine testing?如何进行无头量角器/茉莉花测试?
【发布时间】:2015-12-05 22:29:30
【问题描述】:

我已经用 chromedriver 安装了 jasmine/coffeescripts 量角器。

我正在运行我的测试并且 chrome 启动并且它运行一切。没关系。

但是,如果我从远程(ssh)无头运行它,它会说

using ChromeDriver directly...
Spec started
A Jasmine spec timed out. Resetting the WebDriver Control Flow.
The last active task was:
WebDriver.createSession()
    at <anonymous>
    at <anonymous>
    at <anonymous>
    at <anonymous>

  Going to the Connect pages and launch at dashboard
    ✗ Should login as admin and launch Location view (30 secs)
      - timeout: timed out after 30000 msec waiting for spec to complete

如何在无头模式下运行这些测试?

谢谢, 回复

【问题讨论】:

  • 在我看来他们正在尝试运行,但有些地方不对劲。确保远程登录可以打开您尝试加载的页面。
  • 不应该使用 xvfb 或 phantomjs 之类的东西来让它无头工作吗?
  • 由于渲染问题,不建议 Protractor 使用幻像。就我个人而言,我使用来自 Microsoft Edge (dev.modern.ie/tools/vms/windows) 的免费 VirtualBox VM 并无头运行这些 VM,一切都像冠军一样运行。您也可以在它们上安装其他浏览器。是一个很好的测试基地。
  • 我想用 chrome 而不是 IE。我想使用 chrome 和量角器来测试无头。我听说可以使用 xvfb 来实现这一点。关于如何让它发挥作用的任何见解?
  • “您也可以在其上安装其他浏览器”的哪一部分。你不明白吗?我在一台机器上同时使用 IE、Chrome 和 Firefox 进行测试,一切正常。但是,您似乎打算使用 xvfb 并且@cvakiitho 提出了一个可行的答案。此外,将您的测试限制在一个浏览器上是不明智的,但嘿,这是您的项目。

标签: coffeescript jasmine protractor


【解决方案1】:

我知道的唯一方法是 xvfb,但恕我直言,工作很痛苦。 幸运的是,已经有人为我们这样做了:

https://github.com/SeleniumHQ/docker-selenium 所以基本上你只需要安装docker

curl -sSL https://get.docker.com/ | sh

然后启动docker守护进程

sudo service docker start

然后启动集线器+浏览器,或者独立浏览器:

docker run -d --name selenium-hub -p 4444:4444 selenium/hub:2.47.1
docker run -d --name chrome1 --link selenium-hub:hub selenium/node-chrome:2.46.0
docker run -d --name chrome2 --link selenium-hub:hub selenium/node-chrome:2.46.0
docker run -d --name firefox1 --link selenium-hub:hub selenium/node-firefox:2.46.0

或独立:

docker run -d -p 4444:4444 selenium/standalone-chrome-debug:2.47.1

还记得在测试后杀死 docker 容器,因为它们不会长期存在:)

docker rm -f $(docker ps -a -q --filter 'name=chrome')
docker rm -f $(docker ps -a -q --filter 'name=firefox')
docker rm -f $(docker ps -a -q --filter 'name=selenium-hub')

我几乎忘记了,在您的 ptor 配置、grunt args 或 cli arg 中:seleniumAddress: 'http://&lt;serverWithHubAddress&gt;:4444/wd/hub',

【讨论】:

  • 虽然您提供了一个有效的答案,但我不同意您的说法,即这是“唯一”的方法。还有很多其他方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-06
  • 1970-01-01
  • 2020-10-04
  • 1970-01-01
  • 2017-05-02
  • 1970-01-01
相关资源
最近更新 更多