docker - 量角器无法在 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。
解决方案
运行测试时,您必须考虑: - selenium 容器:集线器 + 浏览器节点在它们自己的“NAT”网络中运行。所以他们有自己的上下文,传递的 url 应该使用“外部”网络或使用“桥接”网络,以便他们可以访问您的主机网络并解析本地 IP。- protractor 实例在其他上下文中运行:可以是容器、其他机器或本地主机。
因此,请确保您为要测试的 URL 和 selenium 集线器提供了正确的 IP。
推荐阅读
- javascript - 由于 Chrome 版本 89.0.4389.72 添加了新的标头 **`sec-ch-ua` 和 `sec-ch-ua-mobile`**,Testcafe 测试失败
- r - 复制代码时在图表上显示错误栏的问题
- python - Dask ML - GaussianNB 返回长度不匹配错误
- google-apps-script - App Script中的Google Forms:如何向表单中的现有项目添加新选择?
- java - 多线程数据库插入 - 我误解了同步关键字吗?
- django - 即使用户名已经存在,Django 表单也会更新前端
- ruby-on-rails - 更改 Rails 日期类型格式
- ios - OneSignal 推送通知链接返回到应用程序
- ios - 从一个 ViewController 中的文本字段获取输入并在另一个类中使用
- javascript - 获取未捕获的 ReferenceError:当我尝试在测验中单击我的答案选项之一时未定义 checkAnswer