我正在使用pyautogui和pytest来自动化GUI应用程序(python pyqt,pyside)的测试。当我从命令行运行时,我的测试运行没有错误,但是当我通过jenkins运行时,在导入pyautogui时出现以下错误:
tests/test_enlighten.py:1: in <module>
import re, sys, signal, logging, argparse, pyautogui, subprocess
/usr/lib/python2.7/site-packages/pyautogui/__init__.py:115: in <module>
from . import _pyautogui_x11 as platformModule
/usr/lib/python2.7/site-packages/pyautogui/_pyautogui_x11.py:160: in
<module>
_display = Display(os.environ['DISPLAY'])
/usr/lib64/python2.7/UserDict.py:23: in __getitem__
raise KeyError(key)
E KeyError: 'DISPLAY'
我了解了有关设置DISPLAY变量的信息,并尝试过
new_env = dict(os.environ)
new_env['DISPLAY'] = '0.0'
我尝试使用“ localhost:0”值,但仍然失败。
E DisplayConnectionError: Can't connect to display "localhost:0": [Errno 111] Connection refused
任何直接帮助或推荐阅读将不胜感激。
答案 0 :(得分:0)
我已经找到了解决该特定问题的方法,该方法对我来说非常有效。 [仅适用于Linux用户]
打开终端并执行以下命令:
xhost + SI:localuser:root
仅此而已。
感谢mooze@github.com。我从那里得到了这个解决方案。
链接:https://github.com/mooz/xkeysnail/commit/9f3a79ab77eea6c581414bbbcc3b90db5eff5c26
答案 1 :(得分:-1)
我也遇到了同样的问题。但是问题仅在我使用sudo时发生。这意味着该问题仅在以超级用户身份运行python脚本时才存在,因此我尝试避免在使用pyautogui时成为超级用户,并且问题消失了。
希望有帮助。