zoukankan      html  css  js  c++  java
  • selenium--浏览器窗口截图

    前戏

    在进行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结尾,则会抛出警告
  • 相关阅读:
    flask + supervisor + gunicorn
    sqlacodegen 的使用
    centos 安装 postgresql
    zipfile 压缩文件
    jmeter跨线程调用和线程内调用
    获取时间
    ant+jmeter环境配置
    Jenkins环境部署
    jmeter分布式性能测试部署
    怎么在Windows Server服务器上发布jsp网站
  • 原文地址:https://www.cnblogs.com/zouzou-busy/p/11182755.html
Copyright © 2011-2022 走看看