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