我正在尝试在 Jenkins 中使用 desktopmagic 截取屏幕截图,但给出了 BitBlt 失败错误

I am trying to take screenshots with desktopmagic in Jenkins but BitBlt failed error is given

所以我运行使用 Git 在 Jenkins 上运行这个项目,并使用 desktopmagic 截取我的第二台物理显示器的屏幕截图:https://github.com/ludios/Desktopmagic

这一切都在 Windows 和 python 中。

现在,当我从 PyCharm 本地 运行 这个项目时,它工作正常并且可以截取屏幕截图,但是,当我 运行 这是一个基于 Jenkins 的构建时,我得到了这个 Traceback :

[11:04:26][Step 1/1]     saveRectToBmp('tmp/screenshot.png', rect=(0, -720, 1280, 0))
[11:04:26][Step 1/1]   File "c:\program files (x86)\python\python27\lib\site-packages\desktopmagic\screengrab_win32.py", line 459, in saveRectToBmp
[11:04:26][Step 1/1]     dc, bitmap = getDCAndBitMap(bmpFilename, rect)
[11:04:26][Step 1/1]   File "c:\program files (x86)\python\python27\lib\site-packages\desktopmagic\screengrab_win32.py", line 240, in getDCAndBitMap
[11:04:26][Step 1/1]     "or an active UAC elevation screen. Error was: " + str(e))
[11:04:26][Step 1/1] desktopmagic.screengrab_win32.GrabFailed: Error during BitBlt. Possible reasons: locked workstation, no display, or an active UAC elevation screen. Error was: BitBlt failed
[11:04:26][Step 1/1] Process exited with code 1

我已经调查了错误并确保显示器处于活动状态并且屏幕保护程序也已关闭,并且没有弹出 UAC。也许 Jenkins 不知道或无权访问物理监视器?

另外补充一下,在 TeamCity 上也是一样。

如有任何帮助或意见,我们将不胜感激。

总结一下,以供将来参考,如果有人遇到这个问题,那么您需要做的就是通过进入命令提示符并将目录更改为 Jenkins 所在的目录来创建管理员用户:cd jenkins/location/ 和 运行 这个命令:-

java -jar jenkins.war

这将创建另一个具有管理员控制权的 Jenkins 实例,然后您应该可以进行屏幕截图了。

希望这对运行解决这个问题的任何人都有帮助。