首页 > 解决方案 > 量角器无法在 docker 容器中启动

问题描述

在 docker 容器中运行我的量角器测试时,它们会尝试启动并出错。我正在使用 docker compose 并尝试以其他解决方案中描述的每种方式调整共享内存分配(每种类型的分配范围一直高达 8gb)。我尝试使用以前工作的 chrome 版本和 chromedriver 设置(最后一个工作管道在 chromedriver_76.0.3809.12 和 google-chrome-stable (77.0.3865.75-1) 上)。我当前的 chrome 和 chromedriver 版本是:

google-chrome-stable (77.0.3865.90-1)
chromedriver_77.0.3865.40 (the stack trace is from a different run with the same results)
Running against http://0.0.0.0:8080 with account code: fakecustomer1
[22:05:14] E/launcher - Error: WebDriverError: unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: headless chrome=77.0.3865.90)
  (Driver info: chromedriver=76.0.3809.68 (420c9498db8ce8fcd190a954d51297672c1515d5-refs/branch-heads/3809@{#864}),platform=Linux 4.9.184-linuxkit x86_64)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
From: Task: WebDriver.findElement(By(css selector, *[id="username"]))
    at onPrepare (/tests/dev_e2e_conf.js:69:30)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
From: Task: WebElement.sendKeys()
    at onPrepare (/tests/dev_e2e_conf.js:69:61)
    at processTicksAndRejections (internal/process/task_queues.js:89:5)
[22:05:14] E/launcher - BUG: launcher exited with 1 tasks remaining

相比之下,在我的本地机器上使用相同的 chrome 版本(基于 osx 而不是 linux)和相同的 chrome 驱动程序运行时,它们运行良好。

编辑:原来是应用程序试图递归加载 angularJS 并最终使测试中的选项卡崩溃(通过在 docker 图像中服务并点击 url 发现)我仍然不知道为什么服务之间存在差异OS X(在相同的构建内容和版本中不会遇到相同的错误)与 Linux。

标签: dockergoogle-chromeprotractorselenium-chromedriver

解决方案


运行测试时,您必须考虑: - selenium 容器:集线器 + 浏览器节点在它们自己的“NAT”网络中运行。所以他们有自己的上下文,传递的 url 应该使用“外部”网络或使用“桥接”网络,以便他们可以访问您的主机网络并解析本地 IP。- protractor 实例在其他上下文中运行:可以是容器、其他机器或本地主机。

因此,请确保您为要测试的 URL 和 selenium 集线器提供了正确的 IP。


推荐阅读