我有 PyVirtualDisplay==0.2.5 包的问题,​​用于 运行 测试使用虚拟显示器(无头模式)

I have the problem with PyVirtualDisplay==0.2.5 package for running tests with usage of virtual displays (headless mode)

我的测试正常,运行 与 PyVirtualDisplay==0.2.1 的预期一致,但我对该软件包的最新版本(例如,PyVirtualDisplay==0.2.5)有疑问。

我的代码片段:

...
    def _set_up(self):

        # Creation of instance of the browser.
        self.display = Display(visible=0, size=(config.WIDTH, config.HEIGHT))
        self.display.start()
        desired = self.get_desired_capabilities(config.BROWSER)
        self.driver = webdriver.Remote(command_executor=config.ACTIVE_NODE,
                                       desired_capabilities=desired)
        # Maximize window size.
        self.driver.set_window_size(config.WIDTH, config.HEIGHT)
...

错误信息:

Error Traceback (most recent call last): File "/usr/local/Cellar/python/3.7.6/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 59, in testPartExecutor yield File "/usr/local/Cellar/python/3.7.6/Frameworks/Python.framework/Versions/3.7/lib/python3.7/unittest/case.py", line 624, in run self.setUp() File "/Users/ratmirasanov/Documents/testing/welcome_widget/test_welcome_widget.py", line 24, in setUp self._set_up() File "/Users/ratmirasanov/Documents/testing/utilities.py", line 41, in _set_up self.display.start() File "/Users/ratmirasanov/Documents/testing/venv/lib/python3.7/site-packages/pyvirtualdisplay/abstractdisplay.py", line 171, in start raise XStartTimeoutError(msg % d) pyvirtualdisplay.abstractdisplay.XStartTimeoutError: Failed to start X on display ":1001" (xdpyinfo check failed).

我没有找到解决此问题的有效解决方案。任何帮助将不胜感激。谢谢。

UPD:PyVirtualDisplay==0.2.5 软件包在 Ubuntu 18.04.3 LTS 上按预期工作。

xdpyindo 程序位于何处:/usr/bin/xdpyinfo

问题出在我的 Mac (macOS Catalina 10.15.2) 上,安装了 XQuartz (https://www.xquartz.org/index.html)(xdpyindo 程序位于 /opt/X11/bin/xdpyinfo 文件夹中)。

My tests are working and running as expected with PyVirtualDisplay==0.2.1

您的显示启动时间超过 10 秒。此约束在旧版本的 PyVirtualDisplay 中不存在。

解释:

从版本 0.2.2 开始,PyVirtualDisplay 依赖 xdpyinfo 程序来确定 X 服务器是否 运行 给定超时。它只尝试启动显示 10 秒,然后引发 XStartTimeoutError.

https://github.com/ponty/PyVirtualDisplay/commit/3b11cf1e1381921c047ba18f4c5d929847f23b84

作为解决方法 'xdpyinfo' 程序可以在 Mac 上删除。

这是 GitHub 上项目存储库中创建的问题中的讨论:https://github.com/ponty/PyVirtualDisplay/issues/42

UPD:实际上,这是一个权限问题。可以在执行以下操作后修复它(不删除 'xdpyinfo' 程序):

mkdir /tmp/.X11-unix 
sudo chmod 1777 /tmp/.X11-unix 
sudo chown root /tmp/.X11-unix/

希望对大家有所帮助。