前戏

在进行web自动化的时候,只有一个报错信息是不行的,往往需要截图来帮助我们来快速的定位问题,试想一下,我们在一个弹框里添加一些数据,点击保存后,然后在操作元素,这时selenium报错,说找不到这个元素,如果只看错误信息,那我们可能会以为是没找到这个元素,而前面的添加数据保存是成功的。那有没有这样的可能,当我们点击保存的时候,一个必填项的输入框由于元素的改变,而没有输入,这时候点击保存会提示有必填项没有填,所以问题是出在点击保存之前,而不是在点击保存之后。如果这时能保存到图,我们就能很方便的定位到问题

实战

# 打开百度首页截图,输入 python 搜索后截图
from selenium import webdriver
from time import sleep

driver = webdriver.Chrome()
driver.get(\'http://www.baidu.com\')
driver.get_screenshot_as_file(r\'E:\1234.png\')  # 路径不存在不报错,但保存不了

sleep(2)
driver.find_element_by_css_selector(\'#kw\').send_keys(\'python\')
driver.find_element_by_css_selector(\'#su\').click()
sleep(10)
driver.get_screenshot_as_file(r\'E:\2345.png\')
driver.quit()

注意:图片的后缀必须是png,如果不是png,则会报一个警告,在源码中也有说明

    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
if not filename.lower().endswith(\'.png\') 如果不是以.png结尾,则会抛出警告

 

版权声明:本文为zouzou-busy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zouzou-busy/p/11182755.html