测试立即失败,出现未知错误:通过 systemd 运行 Selenium 网格时,DevToolsActivePort 文件不存在
Posted
技术标签:
【中文标题】测试立即失败,出现未知错误:通过 systemd 运行 Selenium 网格时,DevToolsActivePort 文件不存在【英文标题】:Tests fail immediately with unknown error: DevToolsActivePort file doesn't exist when running Selenium grid through systemd 【发布时间】:2020-01-31 00:00:59 【问题描述】:我一直在尝试将 Selenium 网格服务的启动方式从 .rclocal
中的 shell 脚本更改为 systemd
服务,但它不起作用。脚本是这样的:
#!/bin/bash
java -jar /opt/selenium-server-standalone.jar -role hub -hubConfig hubconfig.json
xvfb-run --server-args="-screen 0 2048x1536x24" java -jar /opt/selenium-server-standalone.jar -role
node -nodeConfig nodeconfig.json
我创建了如下两个不同的服务:
(*** 不允许我放置服务的内容,因为它说它的格式不正确)
服务正在正确启动:
selenium-hub
● selenium-hub.service - Selenium service
Loaded: loaded (/etc/systemd/system/selenium-hub.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2019-10-01 15:53:10 UTC; 2min 41s ago
Main PID: 23803 (java)
CGroup: /system.slice/selenium-hub.service
└─23803 /bin/java -jar /opt/selenium-server-standalone.jar -role hub -hubConfig /home/selenium/hubconfig.json
Oct 01 15:53:12 vm java[23803]: 15:53:12.163 INFO - Selenium build info: version: '3.9.1', revision: '63f7b50'
Oct 01 15:53:12 vm java[23803]: 15:53:12.164 INFO - Launching Selenium Grid hub on port 4444
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.384:INFO::main: Logging initialized @2790ms to org.seleniumhq.jetty9.util.log.StdErrLog
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.492:INFO:osjs.Server:main: jetty-9.4.7.v20170914, build timestamp: 2017-11-21T21:27:37Z, git hash: 82b8fb23f757335bb3329d540ce37a2a2615f0a8
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.524:INFO:osjs.session:main: DefaultSessionIdManager workerName=node0
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.524:INFO:osjs.session:main: No SessionScavenger set, using defaults
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.529:INFO:osjs.session:main: Scavenging every 660000ms
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.538:INFO:osjsh.ContextHandler:main: Started o.s.j.s.ServletContextHandler@60704c/,null,AVAILABLE
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.562:INFO:osjs.AbstractConnector:main: Started ServerConnector@1fe20588HTTP/1.1,[http/1.1]0.0.0.0:4444
Oct 01 15:53:13 vm java[23803]: 2019-10-01 15:53:13.562:INFO:osjs.Server:main: Started @2968ms
Oct 01 15:53:13 vm java[23803]: 15:53:13.562 INFO - Selenium Grid hub is up and running
Oct 01 15:53:13 vm java[23803]: 15:53:13.562 INFO - Nodes should register to http://1.2.3.4:4444/grid/register/
Oct 01 15:53:13 vm java[23803]: 15:53:13.562 INFO - Clients should connect to http://1.2.3.4:4444/wd/hub
Oct 01 15:53:14 vm java[23803]: 15:53:14.797 INFO - Registered a node http://1.2.3.4:5555
selenium-node:
● selenium-node.service - Selenium nodes
Loaded: loaded (/etc/systemd/system/selenium-node.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2019-10-01 15:53:10 UTC; 6min ago
Main PID: 23813 (xvfb-run)
CGroup: /system.slice/selenium-node.service
├─23813 /bin/sh /bin/xvfb-run --server-args="-screen 0 2048x1536x24" java -jar /opt/selenium-server-standalone.jar -role node -nodeConfig /home/selenium/nodeconfig.json
├─23856 java -jar /opt/selenium-server-standalone.jar -role node -nodeConfig /home/selenium/nodeconfig.json
├─24326 /usr/local/bin/chromedriver --port=1713
├─24327 /usr/local/bin/chromedriver --port=26741
├─24328 /usr/local/bin/chromedriver --port=20065
├─24329 /usr/local/bin/chromedriver --port=6459
├─24331 /usr/local/bin/chromedriver --port=15872
├─24332 /usr/local/bin/chromedriver --port=29475
├─24333 /usr/local/bin/chromedriver --port=30216
├─24334 /usr/local/bin/chromedriver --port=6955
├─24558 /usr/local/bin/chromedriver --port=2425
├─24559 /usr/local/bin/chromedriver --port=19304
├─24560 /usr/local/bin/chromedriver --port=12150
├─24561 /usr/local/bin/chromedriver --port=26147
├─24562 /usr/local/bin/chromedriver --port=16545
├─24570 /usr/local/bin/chromedriver --port=12780
├─24602 /usr/local/bin/chromedriver --port=10959
├─24603 /usr/local/bin/chromedriver --port=8970
├─24753 /usr/local/bin/chromedriver --port=13438
├─24754 /usr/local/bin/chromedriver --port=15725
└─24772 /usr/local/bin/chromedriver --port=28829
Oct 01 15:55:19 vm xvfb-run[23813]: Starting ChromeDriver 77.0.3865.40 (f484704e052e0b556f8030b65b953dce96503217-refs/branch-heads/3865@#442) on port 15725
Oct 01 15:55:19 vm xvfb-run[23813]: Only local connections are allowed.
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.112 INFO - /session: Executing POST on /session (handler: BeginSession)
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.113 INFO - Capabilities are: Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.114 INFO - Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm-usage, window-siz
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.115 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.BeginSession@53702c02
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.115 INFO - Found handler: org.openqa.selenium.remote.server.commandhandler.BeginSession@4ae12041
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.116 INFO - /session: Executing POST on /session (handler: BeginSession)
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.117 INFO - Capabilities are: Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.118 INFO - Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm-usage, window-siz
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.118 INFO - /session: Executing POST on /session (handler: BeginSession)
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.120 INFO - Capabilities are: Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.120 INFO - Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm-usage, window-siz
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.121 INFO - /session: Executing POST on /session (handler: BeginSession)
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.123 INFO - Capabilities are: Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.123 INFO - Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm-usage, window-siz
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.124 INFO - /session: Executing POST on /session (handler: BeginSession)
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.139 INFO - Capabilities are: Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm
Oct 01 15:55:19 vm xvfb-run[23813]: 15:55:19.139 INFO - Capabilities browserName: chrome, goog:chromeOptions: args: [enable-automation, disable-infobars, disable-notifications, no-sandbox, --disable-dev-shm-usage, window-siz
Oct 01 15:55:19 vm xvfb-run[23813]: Starting ChromeDriver 77.0.3865.40 (f484704e052e0b556f8030b65b953dce96503217-refs/branch-heads/3865@#442) on port 26147
Oct 01 15:55:19 vm xvfb-run[23813]: Only local connections are allowed.
Oct 01 15:55:19 vm xvfb-run[23813]: Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
但是所有测试都失败并出现相同的错误:
OpenQA.Selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:42:28.403Z'
DevToolsActivePort
的问题源于 /dev/shm 太小,有时会导致浏览器崩溃(https://***.com/a/50642913/5364231、https://bugs.chromium.org/p/chromium/issues/detail?id=736452#c64),所以我已经在功能中添加了--disable-dev-shm-usage
。
我认为问题在于服务selenium-hub
无法与selenium-node
通信。非常感谢任何帮助。
【问题讨论】:
【参考方案1】:拇指规则
Chrome 在启动期间崩溃的一个常见原因是在 Linux 上以
root
用户 (administrator
) 运行 Chrome。虽然可以通过在创建 WebDriver 会话时传递--no-sandbox
标志来解决此问题,但不支持并且强烈建议不要使用此类配置。您需要将环境配置为以普通用户身份运行 Chrome。
此错误消息...
OpenQA.Selenium.WebDriverException: unknown error: Chrome failed to start: exited abnormally
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
Build info: version: '3.9.1', revision: '63f7b50', time: '2018-02-07T22:42:28.403Z'
...暗示 ChromeDriver 无法启动/生成新的 WebBrowser 即 Chrome 浏览器 会话。
您的主要问题是您使用的二进制文件版本之间的不兼容性,如下所示:
您使用的是最新的 chromedriver=77.0 大概您正在使用 chrome= 77.0。 您的 Selenium Client 版本是 2018-02-07T22:42:28.403Z 的 3.9.1,几乎是 1.5 岁。因此 Selenium Client v3.9.1 、ChromeDriver v77.0 和 Chrome 浏览器 v77.0 之间存在明显的不匹配性 /p>
确保: 您可以在以下位置找到一些详细的讨论: 这是Sandbox故事的链接。
解决方案
@Test
。
参考
结尾
【讨论】:
以上是关于测试立即失败,出现未知错误:通过 systemd 运行 Selenium 网格时,DevToolsActivePort 文件不存在的主要内容,如果未能解决你的问题,请参考以下文章
Mule Anypoint Studio - 测试连接失败 - 进行连接测试时出现未知错误 - 自定义 API
Gcloud 云构建本地组件失败并出现错误“加载配置文件时出错:cloudbuild.Build 中的未知字段“availableSecrets””