You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes部署的Selenium Grid中启用Firefox全屏截图功能?

实现Selenium Grid Firefox节点的全屏截图功能

一、调整Kubernetes Selenium Worker节点配置

针对你的Deployment配置,需做以下修改以支持全屏截图:

  1. 更新资源与共享内存配置
    全屏截图需要足够的内存和共享内存空间,修改后的完整Deployment配置如下:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: selenium-standalone-worker
  namespace: default
  labels:
    app: selenium-standalone-worker
spec:
  replicas: 1
  selector:
    matchLabels:
      app: selenium-standalone-worker
  template:
    metadata:
      labels:
        app: selenium-standalone-worker
    spec:
      volumes:
        - name: shmem
          emptyDir:
            medium: Memory
            sizeLimit: 2Gi  # 启用共享内存限制,满足Firefox渲染需求
      containers:
        - name: selenium-standalone-worker-container
          image: selenium/standalone-firefox:144.0-20251101
          imagePullPolicy: Always
          ports:
            - containerPort: 4444
          resources:
            requests:
              cpu: "500m"
              memory: "1Gi"  # 调高内存请求,避免资源不足
            limits:
              cpu: "1"
              memory: "2Gi"  # 调高内存限制,支持全屏截图的内存消耗
          volumeMounts:
            - name: shmem
              mountPath: /dev/shm
          env:
            - name: SE_START_VNC
              value: "false"
            # 添加Firefox偏好设置,确保全屏截图功能正常
            - name: SE_FIREFOX_PREFERENCES
              value: '{"dom.events.testing.async.enabled": true, "browser.tabs.remote.autostart": false}'
          readinessProbe:
            exec:
              command:
                - sh
                - -c
                - 'curl -s http://localhost:4444/wd/hub/status | grep ''"ready": true'''
            initialDelaySeconds: 5
            periodSeconds: 10
          livenessProbe:
            httpGet:
              path: /wd/hub/status
              port: 4444
            initialDelaySeconds: 15
  1. 关键配置说明
  • sizeLimit: 2Gi:Firefox依赖共享内存处理页面渲染,足够的空间可避免截图时内存溢出
  • 内存资源调整:全屏截图会占用额外内存,调高请求与限制可防止Pod被OOM Kill
  • SE_FIREFOX_PREFERENCES:设置异步事件处理、禁用远程标签页等偏好,避免截图异常

二、客户端远程WebDriver配置

在客户端代码中,需正确配置FirefoxOptions并连接到Selenium Grid,确保get_full_page_screenshot_as_png()方法生效:

Python示例代码

from selenium import webdriver
from selenium.webdriver.firefox.options import Options as FirefoxOptions

# 配置Firefox启动参数
firefox_options = FirefoxOptions()
firefox_options.add_argument("--width=1920")
firefox_options.add_argument("--height=1080")

# 连接到Selenium Grid Hub
driver = webdriver.Remote(
    command_executor="http://<你的Grid Hub地址>:4444/wd/hub",
    options=firefox_options
)

try:
    driver.get("https://example.com")
    # 调用全屏截图方法
    full_screenshot_data = driver.get_full_page_screenshot_as_png()
    # 保存截图到本地文件
    with open("full_page_screenshot.png", "wb") as f:
        f.write(full_screenshot_data)
finally:
    driver.quit()

Java示例代码

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxOptions;
import org.openqa.selenium.remote.RemoteWebDriver;
import java.io.File;
import org.openqa.selenium.OutputType;

public class FullPageScreenshotDemo {
    public static void main(String[] args) throws Exception {
        FirefoxOptions firefoxOptions = new FirefoxOptions();
        firefoxOptions.addArguments("--width=1920", "--height=1080");

        // 连接到Selenium Grid Hub
        WebDriver driver = new RemoteWebDriver(
            new java.net.URL("http://<你的Grid Hub地址>:4444/wd/hub"),
            firefoxOptions
        );

        try {
            driver.get("https://example.com");
            // 调用全屏截图方法
            File screenshotFile = ((org.openqa.selenium.firefox.FirefoxDriver) driver).getFullPageScreenshotAs(OutputType.FILE);
            // 可将文件复制到指定路径
            // java.nio.file.Files.copy(screenshotFile.toPath(), new File("full_page_screenshot.png").toPath());
        } finally {
            driver.quit();
        }
    }
}

注意事项

  • 确保客户端能正常访问Selenium Grid Hub的4444端口,Worker节点与Hub网络连通
  • 若截图失败,可查看Worker节点的Pod日志,排查内存不足或Firefox渲染错误
  • 保持客户端Selenium版本与Worker节点使用的镜像版本一致,避免兼容性问题

内容的提问来源于stack exchange,提问作者Jeppe Christensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.11 23:13:09