jav*_*eek 5 automation cucumber docker protractor
我正在尝试将自动化测试容器化以在 docker 环境中运行。当构建在自动化代码上运行时,它会创建一个 docker 映像并在 DTR 中更新。我有一个单独的 jenkins 管道,它在 docker 映像中运行自动化命令并将结果上传到工作区中。所有这些设置在非 docker 环境(即本地 mac 终端)中都运行良好,但相同的测试在 docker 环境中失败。我正在尝试找出解决方案,但似乎不起作用。
\n\n在 docker 环境中运行量角器测试时出现以下错误
\n\n# test/cucumber/stepDefinitions/hooks.ts:31\n WebDriverError: 无效会话 id\n (驱动程序信息: chromedriver=73.0.3683.68 (47787ec04b6e38e22703e856e101e840b65afe72),platform=Linux 4.9.125-linuxkit x86_64) 之后
\n\n我从 Circleci/node ( https://hub.docker.com/r/circleci/node/ ) 构建了 docker 映像,并且该映像需要安装库(node、npm、yarn、chrome 和 chrome 驱动程序)。
\n\n在运行测试之前,我确保量角器、黄瓜和 webdriver 模块已安装。
\n\n即便如此,我仍在尝试安装 chrome 和 chrome 驱动程序,同时使用 apt-get 包管理器构建映像。
\n\ndocker env 位于 Debian GNU/Linux 9 \\n \\l\nchrome 驱动程序版本为 \n73.0.3683.75-1~deb9u1\nGoogle Chrome 版本为 73.0.3683.103 \n我正在无头运行
\n\nMaking sure the webdriver manager is updated before starting it\nWeb driver version 13.0\n\nRunning below:\nwebdriver-manager update --ignore_ssl --versions.chrome 73.0.3683.75-1~deb9u1\nwebdriver-manager start --detach\nprotractor test/cucumber/config/cucumberConfig.ts\nRun Code Online (Sandbox Code Playgroud)\n\n我希望所有测试都能在 docker 环境中运行,就像在 mac 终端中运行一样,但会出现以下错误:
\n\n有什么想法吗?
\n我最近遇到了同样的问题。由于某种原因,浏览器实例似乎无法启动。就我而言,添加--disable-dev-shm-usagechrome-options 解决了这个问题。
ChromeOptions options = new ChromeOptions();
options.addArguments("--disable-dev-shm-usage");
ChromeDriver driver = new ChromeDriver(options);
Run Code Online (Sandbox Code Playgroud)
为什么这有帮助:
默认情况下,Docker 运行一个具有 /dev/shm 共享内存空间 64MB 的容器。这对于 Chrome 来说通常太小,并且会导致 Chrome 在渲染大页面时崩溃。要修复此问题,请使用 docker run --shm-size=1gb 运行容器以增加 /dev/shm 的大小。从 Chrome 65 开始,不再需要这样做。相反,使用 --disable-dev-shm-usage 标志启动浏览器:
据此,--shm-size=1gb如果您确实想使用 /dev/shm,则另一个想法是在运行容器时尝试使用 /dev/shm。
可能会检查 Chrome 版本是否与您在 Docker 中使用的操作系统版本兼容。从日志来看,该页面甚至没有加载或在加载时崩溃。要么需要更多内存来加载页面,要么可能已启用 chrome 扩展。
尝试将这些选项添加到配置中
chromeOptions: {
args: [
'incognito',
'disable-extensions',
'disable-infobars',
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6043 次 |
| 最近记录: |