显示变量错误pyautogui

时间:2018-07-02 21:21:18

标签: python jenkins environment-variables pytest pyautogui

我正在使用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

任何直接帮助或推荐阅读将不胜感激。

2 个答案:

答案 0 :(得分:0)

我已经找到了解决该特定问题的方法,该方法对我来说非常有效。 [仅适用于Linux用户]

打开终端并执行以下命令:

xhost + SI:localuser:root

仅此而已。

感谢mooze@github.com。我从那里得到了这个解决方案。

链接:https://github.com/mooz/xkeysnail/commit/9f3a79ab77eea6c581414bbbcc3b90db5eff5c26

答案 1 :(得分:-1)

我也遇到了同样的问题。但是问题仅在我使用sudo时发生。这意味着该问题仅在以超级用户身份运行python脚本时才存在,因此我尝试避免在使用pyautogui时成为超级用户,并且问题消失了。

希望有帮助。