Selenium:Docker 容器中的 Chrome:截图?

Chr*_*uer 8 selenium google-chrome docker

我正在使用官方的 selenium chrome 驱动程序 图片:https ://hub.docker.com/r/selenium/standalone-chrome/

不幸的是,我无法在容器中截取屏幕截图。

这段代码在容器之外运行得很好:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.python.org")
driver.save_screenshot("some_file.png")
driver.close()
Run Code Online (Sandbox Code Playgroud)

但在容器中,save_screenshot 返回 false。我在chrome的github上发现了一个小提示,必须设置屏幕尺寸和深度,但是将它们设置为1920 * 1080 * 24并没有改变任何东西

Dan*_*ata 0

如果您使用容器,那么您应该考虑使用完全独立的浏览器容器。Selenoid(或其 Kubernetes 版本 Moon)利用 Selenium Grid 机制来实现此目的。这意味着代码中唯一需要的就是指定 Selenium Hub 服务器和所需的浏览器版本。

    capabilities = {
        "browserName": "chrome",
        "version": "109.0"
    }
    context.driver = webdriver.Remote(
        command_executor="http://localhost:4444/wd/hub",
        desired_capabilities=capabilities)
Run Code Online (Sandbox Code Playgroud)

远程驱动程序完全支持从任何浏览器截图,您无需担心维护浏览器驱动程序和浏览器。

官方网页: https: //aerokube.com/selenoid/latest/