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

使用PyAutoGUI与Docker Firefox自动化时无法遵循显示约束问题

问题:PyAutoGUI未识别Docker容器的显示,返回主机屏幕坐标

环境:搭载Retina显示屏的M1 MacBook Pro + Docker Desktop

部署情况

使用以下命令部署jlesage/firefox镜像:

docker run -d \
    --name firefox \
    -p 5800:5800 \
    -p 5900:5900 \
    -e DISPLAY_WIDTH=1024 \
    -e DISPLAY_HEIGHT=768 \
    -e DISPLAY=:0 \
    -v /Users/vw/DEV/docker/scripts:/scripts \
    -e VNC_PASSWORD=password \
    jlesage/firefox

部署后可通过VNC正常访问容器内的Firefox。

问题现象

编写PyAutoGUI脚本尝试查找并点击Facebook按钮:

import os
import pyautogui
import time

# Ensure the script uses the Docker container's display
os.environ["DISPLAY"] = ":0"

# Delay to allow setup
time.sleep(3)

try:
    # Locate the image within the Docker display
    location = pyautogui.locateCenterOnScreen('Facebook.png', confidence=0.8)

    if location:
        x, y = location
        # Constrain search to 1024x768
        if 0 <= x < 1024 and 0 <= y < 768:
            print(f"Image found at: {location}")
            pyautogui.click(location)
        else:
            print(f"Image found outside bounds (1024x768): {location}")
    else:
        print("Image not found on the screen.")
except Exception as e:
    print(f"An error occurred: {e}")

运行后得到错误:Image found outside bounds (1024x768): Point(x=np.int64(1743), y=np.int64(1145)),说明脚本实际识别的是Mac主机的Retina屏幕坐标,而非容器内的1024x768显示。

解决方法

  1. 必须在Docker容器内部运行脚本
    主机的DISPLAY=:0指向的是Mac自身的Retina显示屏,和容器内的X11显示完全独立。在主机上运行脚本,pyautogui会默认抓取主机屏幕,自然返回主机的高分辨率坐标。

  2. 进入容器并安装依赖
    容器默认没有Python和PyAutoGUI相关库,需要先安装:

    # 进入容器终端
    docker exec -it firefox bash
    # 更新包列表并安装依赖
    apt update && apt install -y python3 python3-pip python3-opencv
    # 安装PyAutoGUI
    pip3 install pyautogui
    
  3. 在容器内运行脚本
    挂载的脚本目录在容器内是/scripts,直接运行:

    python3 /scripts/your_script_name.py
    
  4. 可选:简化脚本的DISPLAY设置
    容器内部已经通过环境变量设置了DISPLAY=:0,脚本里可以去掉os.environ["DISPLAY"] = ":0"这一行,避免冗余。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 01:47:25