Python + Selenium(八)- get_screenshot_as_file 保存截图方法的使用

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('保存失败')

在这段代码中存在两个问题:

  1. 保存的文件名问题
  2. 保存的路径问题

第一个问题的引发原因是为了显示美观,我将文件名格式改为了'%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 结尾哦。

发布了77 篇原创文章 · 获赞 156 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/qq_34659777/article/details/104182093
今日推荐