我使用selenium-docker项目在没有XVFB (START_XVFB=false)的对接容器中运行铬。
我想使用webgl支持。使用chrome v95和lower (https://github.com/SeleniumHQ/docker-selenium/releases/tag/4.1.0-prerelease-20211105),webgl是启用的(与https://get.webgl.org/检查)。
但是,当使用chrome v96或更高版本时,它不工作(https://github.com/SeleniumHQ/docker-selenium/releases/tag/4.1.2-20220131)。我可以看到,gpu-process有--use-gl=disabled参数,铬v95不会发生这种情况。
seluser@6e0bab2896f2:/$ ps aux|grep chrome
seluser 136 0.0 0.0 16875056 16500 ? Sl 22:36 0:00 /opt/selenium/chromedriver-97.0.4692.71 --port=48167
seluser 153 0.7 0.0 17181620 99736 ? Sl 22:36 0:00 /opt/google/chrome/chrome --no-sandbox --allow-pre-commit-input --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --enable-automation --enable-blink-features=ShadowDOMV0 --enable-logging --headless --log-level=0 --no-first-run --no-service-autorun --password-store=basic --remote-debugging-port=0 --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.com.google.Chrome.RBwolw data:,
seluser 160 0.0 0.0 17022544 54552 ? S 22:36 0:00 /opt/google/chrome/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless --log-level=0 --headless --enable-crash-reporter
seluser 161 0.0 0.0 17022544 54628 ? S 22:36 0:00 /opt/google/chrome/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headless --enable-crash-reporter
seluser 177 0.2 0.0 17088440 81444 ? Sl 22:36 0:00 /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --field-trial-handle=10249259231085024426,2441013785441743208,131072 --disable-features=PaintHolding --lang=en-US --service-sandbox-type=none --no-sandbox --enable-logging --log-level=0 --use-angle=swiftshader-webgl --use-gl=angle --headless --enable-crash-reporter --enable-logging --log-level=0 --shared-files=v8_context_snapshot_data:100
seluser 206 0.0 0.0 17064708 47756 ? Sl 22:36 0:00 /opt/google/chrome/chrome --type=gpu-process --field-trial-handle=10249259231085024426,2441013785441743208,131072 --disable-features=PaintHolding --no-sandbox --enable-logging --headless --log-level=0 --ozone-platform=headless --use-angle=swiftshader-webgl --headless --enable-crash-reporter --gpu-preferences=UAAAAAAAAAAgAAAYAAAAAAAAAAAAAAAAAABgAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAA= --use-gl=disabled --override-use-software-gl-for-headless --enable-logging --log-level=0 --shared-files
seluser 240 0.4 0.0 25521252 86756 ? Sl 22:36 0:00 /opt/google/chrome/chrome --type=renderer --headless --enable-crash-reporter --lang=en-US --no-sandbox --enable-automation --enable-logging --log-level=0 --remote-debugging-port=0 --test-type=webdriver --allow-pre-commit-input --ozone-platform=headless --field-trial-handle=10249259231085024426,2441013785441743208,131072 --disable-features=PaintHolding --disable-gpu-compositing --enable-blink-features=ShadowDOMV0 --lang=en-US --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=7 --launch-time-ticks=2093974944 --shared-files=v8_context_snapshot_data:100
seluser 265 0.0 0.0 9040 720 pts/0 S+ 22:36 0:00 grep --color=auto chrome我试着把论点传递给铬,但它们不起作用。我相信selenium映像与这种行为无关,它在铬v96中发生了变化。
对我来说,启用XVFB不是一种选择,性能是不一样的。
如何避免将这个--use-gl=disabled参数传递给铬gpu进程?
这是带有铬94的ps ouptut,这里选择了快速着色器:
seluser 35 0.0 3.6 5418392 146164 ? Sl Feb16 2:40 java -Dselenium.LOGGER.level=WARNING -cp /opt/selenium/*:. org.openqa.grid.selenium.GridLauncherV3 -role node -hub http://selenium-hub:4444/grid/register -remoteHost http://chrome-node:5555 -nodeConfig /opt/selenium/config.json
seluser 353 0.3 0.3 16874900 15128 ? Sl 08:45 0:00 /opt/selenium/chromedriver-94.0.4606.61 --port=13828
seluser 363 1.2 2.3 17163152 96028 ? Sl 08:45 0:00 /opt/google/chrome/chrome --no-sandbox --allow-pre-commit-input --autoplay-policy=no-user-gesture-required --blink-settings=imagesEnabled=false --disable-background-network
ing --disable-background-timer-throttling --disable-backgrounding-occluded-windows --disable-breakpad --disable-client-side-phishing-detection --disable-component-extensions-with-background-pages --disable-default-apps --disable-extensio
ns --disable-features=TranslateUI --disable-hang-monitor --disable-ipc-flooding-protection --disable-notifications --disable-permissions-api --disable-popup-blocking --disable-prompt-on-repost --disable-renderer-backgrounding --disable-s
ync --disable-translate --enable-blink-features=ShadowDOMV0 --enable-logging --force-color-profile=srgb --headless --hide-scrollbars --ignore-certificate-errors --log-level=0 --metrics-recording-only --mute-audio --no-first-run --no-serv
ice-autorun --password-store=basic --remote-debugging-port=0 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 --user-data-dir=/tmp/.com.google.Chrome.H8QetU --window-size=1280,1280 data:,
seluser 371 0.2 1.3 17020192 54600 ? S 08:45 0:00 /opt/google/chrome/chrome --type=zygote --no-zygote-sandbox --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
seluser 372 0.2 1.3 17020192 54700 ? S 08:45 0:00 /opt/google/chrome/chrome --type=zygote --no-sandbox --enable-logging --headless --log-level=0 --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36
seluser 387 11.6 2.9 17134132 119824 ? Sl 08:45 0:01 /opt/google/chrome/chrome --type=gpu-process --field-trial-handle=5673360104449051270,16628090171661640812,131072 --disable-features=PaintHolding,TranslateUI --no-sandbox -
-disable-breakpad --enable-logging --headless --log-level=0 --ozone-platform=headless --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 --gpu-prefer
ences=UAAAAAAAAAAgAAAIAAAAAAAAAAAAAAAAAABgAAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAACAAAAAAAAAA= --use-gl=swiftshader-webgl --override-use-software-gl-for-headless --enable-logging --log-level=0 --shared-files
seluser 388 0.3 1.9 17086024 79308 ? Sl 08:45 0:00 /opt/google/chrome/chrome --type=utility --utility-sub-type=network.mojom.NetworkService --field-trial-handle=5673360104449051270,16628090171661640812,131072 --disable-feat
ures=PaintHolding,TranslateUI --lang=en-US --service-sandbox-type=none --no-sandbox --enable-logging --ignore-certificate-errors --log-level=0 --use-gl=swiftshader-webgl --mute-audio --ignore-certificate-errors --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 --enable-logging --log-level=0 --shared-files=v8_context_snapshot_data:100
seluser 418 8.3 2.3 25521800 93096 ? Sl 08:45 0:00 /opt/google/chrome/chrome --type=renderer --headless --user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safar
i/537.36 --lang=en-US --no-sandbox --autoplay-policy=no-user-gesture-required --disable-background-timer-throttling --disable-breakpad --disable-notifications --disable-permissions-api --enable-logging --force-color-profile=srgb --log-le
vel=0 --remote-debugging-port=0 --test-type=webdriver --allow-pre-commit-input --blink-settings=imagesEnabled=false --ozone-platform=headless --field-trial-handle=5673360104449051270,16628090171661640812,131072 --disable-features=PaintHolding,TranslateUI --disable-gpu-compositing --enable-blink-features=ShadowDOMV0 --lang=en-US --num-raster-threads=4 --enable-main-frame-before-activation --renderer-client-id=5 --shared-files=v8_context_snapshot_data:100发布于 2022-08-04 18:45:03
它用铬104开箱工作,不需要任何gl标志。
发布于 2022-02-17 21:29:04
使用-gl
--use-gl选择GPU进程应该使用的GL实现。可供选择的办法如下:
根据讨论,通过osmesa实现已经支持无头模式下的第617551期:无头支持WebGL WebGL。
允许Mesallvm管道驱动程序的WebGL读回:允许Mesallvm管道驱动程序的WebGL读取。目前,来自梅萨的汽车司机都是黑名单。它足够快和稳定,允许使用gpu进程。但是只有启用WebGL,其他特性仍然不会使用gpu进程。例如,2D组合Skia比在软件GL驱动程序上组合gpu更快。
这个修订将从osmesa切换到SwiftShader:
无头:从osmesa切换到SwiftShader 现在SwiftShader随Chrome一起发布了,我们可以开始使用它在无头模式下呈现GL内容。这需要进行几项更改:
我们还修复了一个错误,用户指定的任何--use-gl标志都是在内部覆盖的。
请注意,SwiftShader目前在macOS上不受支持,因此我们将继续在该平台上以无头模式使用物理GPU (与其他平台不同,其他平台都是软件呈现的)。
若要从现在起在无头模式下禁用WebGL支持,请使用--禁用--gpu--禁用--软件--光栅化器.
此外,引入此修订是为了在Linux无头铬中添加对GPU加速的支持。有了这个修复,WebGL应该可以在SwiftShader中无头工作。
然而,从码头最小设置(高寒)无头测试仍然失败,因为内容与MapboxMap不能正确呈现,无论使用的选项(迅捷/ osmesa)。问题765284:在无头模式下支持GPU硬件正在跟踪特定平台上的这些离散问题。
通过osmesa启用WebGL
要安装和启用osmesa,您需要执行以下步骤:
sudo apt-get install libosmesa
sudo ln -s /usr/lib/x86_64-linux-gnu/libOSMesa.so.6 /opt/google/chrome/libosmesa.so
google-chrome --no-first-run --user-data-dir=~/chrome-stuff --use-gl=osmesa注意:当使用osmesa运行时,整个页面都是用osmesa呈现的,这使得它非常慢。因此,如果有可以在没有WebGL的情况下运行的测试,那么您可能希望在没有osmesa的情况下运行这些测试。
tl;dr
参考文献
发布于 2022-07-20 08:54:16
我也有过类似的问题,对我起作用的是以下标志:--use-gl=angle --use-angle=swiftshader
看来SwiftShader被SwANGLE取代了。罗得的挖掘最终导致了我的这个铬虫,这是我找到答案的地方。
https://stackoverflow.com/questions/70948512
复制相似问题