有没有办法在 GitHub Actions 上模拟基本硬件(鼠标、显示器)的存在?

问题描述 投票:0回答:2

我目前正在开发一个依赖 PyAutoGUI 来控制鼠标的 Python 项目。在将任何新更改推送到 GitHub 之前,我设置了一组要在我的计算机上运行的测试,但我还想在 GitHub Actions 上设置一个工作流程,以在推送时构建和测试我的应用程序。

但是,正如你可以想象的那样,我的问题是在 GitHub Actions 上运行测试的环境没有屏幕也没有鼠标。我的脚本只需要访问屏幕分辨率(

width, height = pyautogui.size()
)并执行简单的操作(例如
pyautogui.click('left')
pyautogui.scroll(...)
)。我的测试实际上并不需要弹出任何窗口来对它们执行操作,只需能够运行这些简单的功能即可。

目前看来问题是缺少显示:

[...]
    import pyautogui
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/pyautogui/__init__.py", line 249, in <module>
    import mouseinfo
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/site-packages/mouseinfo/__init__.py", line 223, in <module>
    _display = Display(os.environ['DISPLAY'])
  File "/opt/hostedtoolcache/Python/3.7.13/x64/lib/python3.7/os.py", line 681, in __getitem__
    raise KeyError(key) from None
KeyError: 'DISPLAY'

因为

DISPLAY
环境变量不存在(或者由于缺少显示而可能等于
:0
)。我还不确定鼠标是否是一个问题,因为它没有超出显示步骤,但我预计它也会有问题。

有谁知道如何在 GitHub Actions 运行器上模拟屏幕和鼠标的存在?或者有什么解决办法吗?

python github github-actions display pyautogui
2个回答
0
投票

经过多次尝试,终于成功了。我对 X 服务器一无所知,所以这感觉就像是一个奇迹。

对于任何感兴趣的人来说,只需安装并运行

xvfb
Python即可。这是我工作流程的关键部分:

[...]
    - name: Install
      run: |
        sudo apt-get install xvfb
        pip install -r requirements.txt
        pip install .
        
    - name: Run tests
      run: |
        xvfb-run -a -s "-screen 0 640x480x8" python -m unittest discover -s tests

Python 只需要在与

xvfb-run
相同的命令上运行即可,仅此而已。这会适当地设置
DISPLAY
变量并解决依赖它的 PyAutoGUI 导入问题。然后,无论是否有鼠标,PyAutoGUI 中与鼠标相关的操作都会毫无问题地执行。

感谢您让我走上正确的道路。

干杯。


0
投票

感谢救星@JoHoward!!!为我工作并添加了一些内容:

  • 还按照我的 github 操作中的错误日志提示,使用 'xfvb' 安装 'python3-tk' 和 'python3-dev'
  • 运行
  • pytest 而不是单元测试
我的完整 github 操作 .yml:

name: Push on: push jobs: pytest: runs-on: ubuntu-latest steps: - name: Checkout Repository # must checkout! uses: actions/checkout@v3 - name: Setup python uses: actions/setup-python@v4 - name: Build environment run: pip install --no-cache-dir -r requirements.txt - name: Pytest with pyautogui run: | sudo apt-get install xvfb python3-tk python3-dev xvfb-run -a -s "-screen 0 640x480x8" pytest -v
    
© www.soinside.com 2019 - 2024. All rights reserved.