首页 > 解决方案 > docker上的Seleninum Chrome驱动程序会话错误

问题描述

我正在使用 docker 镜像 selenium/standalone-chrome:4.0.0 来运行 selenium,昨天刚刚开始抛出错误。

这是我的 chrome 网络驱动程序选项:

val chromeOptions = ChromeOptions()

chromeOptions.setHeadless(isHeadless)
chromeOptions.addArguments(
            "--whitelisted-ips",
            "--no-sandbox",
            "--disable-extensions",
            "start-maximized",
            "enable-automation",
            "--disable-infobars",
            "--disable-dev-shm-usage",
            "--disable-browser-side-navigation",
            "--disable-gpu", "window-size=1980,960"
        )

我得到的错误是:

由于选项卡崩溃的页面崩溃而删除会话(会话信息:headless chrome = 81.0.4044.92)构建信息:版本:'未知',修订:'未知',时间:'未知'系统信息:主机:'ip-10- 0-3-6.eu-west-1.compute.internal',ip:'10.0.3.6',os.name:'Linux',os.arch:'amd64',os.version:'4.14.152- 127.182.amzn2.x86_64', java.version: '1.8.0_242' 驱动信息: org.openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 81.0.4044.92, chrome: {chromedriverVersion: 81.0 .4044.69 (6813546031a4b..., userDataDir: /tmp/.com.google.Chrome.LfBvAx}, goog:chromeOptions: {debuggerAddress: localhost:40023}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: none, platform: LINUX , 平台名称: LINUX,代理:Proxy(),setWindowRect:true,strictFileInteractability:false,超时:{implicit:0,pageLoad:300000,脚本:30000},unhandledPromptBehavior:关闭并通知,webauthn:virtualAuthenticators:true}会话ID:bfce4fb924589b8929dc0351195352e1 ***元素信息:{使用=id,值=XXXXX`

无效的会话 id 构建信息:版本:'未知',修订:'未知',时间:'未知'系统信息:主机:'ip-10-0-3-6.eu-west-1.compute.internal', ip: '10.0.3.6', os.name: 'Linux', os.arch: 'amd64', os.version: '4.14.152-127.182.amzn2.x86_64', java.version: '1.8.0_242' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver Capabilities {acceptInsecureCerts: false, browserName: chrome, browserVersion: 81.0.4044.92, chrome: {chromedriverVersion: 81.0.4044.69 (6813546031a4b ..., userDataDir: /tmp/.com.google .Chrome.LfBvAx}, goog:chromeOptions: {debuggerAddress: localhost:40023}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: none, platform: LINUX, platformName: LINUX, proxy: Proxy(), setWindowRect: true, strictFileInteractability:错误,超时:{implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior:dismiss and notify, webauthn:virtualAuthenticators: true} 会话 ID:bfce4fb924589b8929dc0351195352e1

如果我需要添加更多代码,请告诉我。

提前致谢!

标签: seleniumgoogle-chromeselenium-webdriver

解决方案


由于 /dev/shm 太小,某些版本的 Chrome 似乎在 Docker 容器中的某些页面上崩溃了。

要解决它,只需安装-v /dev/shm:/dev/shm

或者,更长,创建一个大的 shm

  1. 以特权模式启动: docker run --privileged

  2. 修复小 /dev/shm 大小

docker exec $id sudo umount /dev/shm
docker exec $id sudo mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=512M tmpfs /dev/shm

以上取自此处,信用归各自所有者所有。

您也可以使用 Firefox,这应该没有任何问题。


推荐阅读