Python保存截图一共有两种方法:
get_screenshot_as_file(self, filename)
save_screenshot(self, filename)
我使用的是第一种get_screenshot_as_file(self, filename)
,这里详细讲一下在使用该方法时遇到的坑。
原错误代码:
def save_screenshot(self):
now_time = time.strftime('%Y-%m-%d %H:%M:%S')
if self.driver.get_screenshot_as_file('/Picture/%s.png' %now_time):
print('保存成功')
else:
print('保存失败')
在这段代码中存在两个问题:
- 保存的文件名问题
- 保存的路径问题
第一个问题的引发原因是为了显示美观,我将文件名格式改为了'%Y-%m-%d %H:%M:%S',2020-02-03 16:53:30
,但是实际的文件名称中不能够存在以下特殊字符,这导致了截图保存失败。
\ / : * ? # ” < > |
第二个问题则是未认真阅读get_screenshot_as_file(self, filename)
方法的接口文档,保存的路径应该为绝对路径。详细接口文档贴在下方:
def get_screenshot_as_file(self, filename):
"""
Saves a screenshot of the current window to a PNG image file. Returns
False if there is any IOError, else returns True. Use full paths in
your filename.
:Args:
- filename: The full path you wish to save your screenshot to. This
should end with a `.png` extension.
:Usage:
driver.get_screenshot_as_file('/Screenshots/foo.png')
"""
if not filename.lower().endswith('.png'):
warnings.warn("name used for saved screenshot does not match file "
"type. It should end with a `.png` extension", UserWarning)
png = self.get_screenshot_as_png()
try:
with open(filename, 'wb') as f:
f.write(png)
except IOError:
return False
finally:
del png
return True
注:get_screenshot_as_file(self, filename)
方法中的 参数 filename 应该以 .png 结尾哦。