我正在尝试在selenium测试中使用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
...
这是什么输出?为什么我会得到它以及如何“避免”呢?
答案 0 :(得分: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由软件包中的debug使用,它显示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()
我希望它能解决您的问题!