1

我正在尝试pyvirtualdisplay在硒测试中使用以创建屏幕截图。这是我在 TestSuite python 类中的测试中如何做到的:

self.display = Display(visible=0, size=(1366, 768))
self.display.start()

在创建驱动程序之前,并截取我使用的屏幕截图

self.driver.save_screenshot('example.png')

但是,在运行测试时,nosetests我得到一些奇怪的输出,如下所示:

easyprocess: DEBUG: version=0.2.3
pyvirtualdisplay: DEBUG: version=0.2.1
easyprocess: DEBUG: param: "['Xvfb', '-help']" 
easyprocess: DEBUG: command: ['Xvfb', '-help']
easyprocess: DEBUG: joined command: Xvfb -help
easyprocess: DEBUG: process was started (pid=21)
easyprocess: DEBUG: process has ended
easyprocess: DEBUG: return code=0
easyprocess: DEBUG: stdout=
easyprocess: DEBUG: stderr=use: X [:<display>] [option]
-a #                   default pointer acceleration (factor)
-ac                    disable access control restrictions
-audit int             set audit trail level
-auth file             select authorization file
-br                    create root window with black background
+bs                    enable any backing store support
-bs                    disable any backing store support
-c                     turns off key-click
c #                    key-click volume (0-100)
-cc int                default color visual class
-nocursor              disable the cursor
-core                  generate core dump on fatal error
-displayfd fd          file descriptor to write display number to when ready to connect
-dpi int               screen resolution in dots per inch
-dpms                  disables VESA DPMS monitor control
-deferglyphs [none|all|16] defer loading of [no|all|16-bit] glyphs
-f #                   bell base (0-100)
-fc string             cursor font
-fn string             default font name
...

这是什么输出?为什么我会得到它以及如何“避免”它?

4

1 回答 1

1

此输出的原因:在 pyvirtualdisplay 包中,xauth.py 文件中有以下代码,该文件检查是否安装了 easyprocess。

def is_installed():
    '''
    Return whether or not xauth is installed.
    '''
    try:
        easyprocess.EasyProcess(['xauth', '-h']).check_installed()
    except easyprocess.EasyProcessCheckInstalledError:
        return False
    else:
        return True

这里 -h 由包中的调试使用,它显示 easyprocess 的帮助选项,并且在输出中显示相同的选项。因此,您的代码不会有任何问题。

调试记录器中存在帮助。因此,如果您想抑制这种情况,只需使用代码中的以下行将记录器设置为 INFO 级别。

logging.getLogger("easyprocess").setLevel(logging.INFO)

在初始化显示之前放置上面的代码(如下所述):

logging.getLogger("easyprocess").setLevel(logging.INFO)

self.display = Display(visible=0, size=(1366, 768))

self.display.start()

我希望它能解决你的问题!

于 2018-09-21T10:56:14.827 回答