zoukankan      html  css  js  c++  java
  • 截屏

    简单:(1)
    # from selenium import webdriver
    #
    # browser = webdriver.Chrome()
    # url = "http://codingpy.com"
    # browser.set_window_size(1200, 900)
    # browser.get(url)
    #
    # browser.save_screenshot("codingpy.png")
    # browser.close()

    (2)

    from selenium import webdriver
    from time import sleep
    driver=webdriver.Firefox()
    driver.get("https://www.baidu.com")
    driver.find_element_by_xpath(".//*[@id='kw']").send_keys("python")
    driver.find_element_by_css_selector("#su").click()
    sleep(2)
    driver.get_screenshot_as_file(r"F:scrrenshotaidu.png")
    sleep(2)
    driver.get("http://www.51zxw.net")
    driver.find_element_by_link_text("网页设计").click() #要截图的页面
    driver.get_screenshot_as_file(r"F:scrrenshot51zxw.jpg") #截图格式和存放地址
    sleep(4)
    driver.close()
    一、截图方法

    1.get_screenshot_as_file(self, filename)

    --这个方法是获取当前window的截图,出现IOError时候返回False,截图成功返回True。

    filename参数是保存文件的路径。
    Usage:
    driver.get_screenshot_as_file('/Screenshots/foo.png')

    2.get_screenshot_as_base64(self)

    --这个方法也是获取屏幕截图,保存的是base64的编码格式,在HTML界面输出截图的时候,会用到。

    比如,想把截图放到html测试报告里。
    Usage:
    driver.get_screenshot_as_base64()

    3.get_screenshot_as_png(self)
    --这个是获取屏幕截图,保存的是二进制数据,很少用到.
    Usage:
    driver.get_screenshot_as_png()

    二、异常后截图

    1.为了能抛异常,把定位登录按钮的id换了个错的id。

    2.给图片命名时候加个时间戳,避免同一个文件名称被覆盖掉。

    3.文件路径,这里直接写的文件名称,就是跟当前的脚本同一个路径。如果图片输出到其它文件路径,需要些文件的绝对路径了。

    4.截图的结果,如果没截到图返回False,截图成功会返回True。

    from selenium import webdriver
    from time import sleep
    import time
    url_login="https://passport.cnblogs.com/user/signin"
    driver=webdriver.Firefox()
    driver.get(url_login)
    try:
    driver.find_element_by_id("input").send_keys(u"上海-悠悠")
    driver.find_element_by_id("input").send_keys("xxx")
    #登录id是错的,定位会抛出异常
    driver.find_element_by_id("signin1").click()
    except Exception as msg:
    print(u"异常原因 %s"%msg)
    #图片名称可以加个时间戳
    nowTime = time.strftime("%Y%m%d.%H.%M.%S")
    t = driver.get_screenshot_as_file("%s.jpg" % nowTime)
    print(u"截图结果: %s"%t)

    ============================================================================================================

    截屏的3中模式:get_screenshot_as_file():save_screenshot():Pillow包:

    在进行无人值守的UI自动化测试,如果页面操作出现了问题,可以用截图的方式保留问题现场,同时佐证自己发现的问题。下面将介绍3种截图的方式:driver.get_screenshot_as_file()、driver.save_screenshot()和Pillow包,前两种是selenium自带的api,最后一个需要单独安装第3方的包

    测试代码
    get_screenshot_as_file():
    #encoding=utf-8

    import os
    import time
    from datetime import datetime
    from selenium import webdriver
    import traceback

    def currentDate():
    '''生成当前日期字符串'''
    date = time.localtime()
    return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])

    def currentTime():
    '''生成当前时间字符串'''
    date = time.localtime()
    return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])


    def createDir():
    '''创建当前日期和当前时间目录'''
    path = os.path.dirname(os.path.abspath(__file__))
    dateDir = os.path.join(path,currentDate())
    #如果当前日期目录不存的话就创建
    if not os.path.exists(dateDir):
    os.mkdir(dateDir)
    timeDir= os.path.join(dateDir,currentTime())
    #如果当前时间目录不存的话就创建
    if not os.path.exists(timeDir):
    os.mkdir(timeDir)
    return timeDir

    def takeScreenshot(driver,savePath,pictureName):
    picturePath = os.path.join(savePath, pictureName+'.png')
    try:
    driver.get_screenshot_as_file(picturePath)
    except Exception as e:
    print(traceback.print_exc())

    # 获取浏览器驱动实例
    driver = webdriver.Chrome(executable_path='f:\chromedriver')
    #访问搜狗首页
    driver.get('http://www.sogou.com')
    time.sleep(3)
    #搜狗首页截图
    takeScreenshot(driver,createDir(),'sogou')
    time.sleep(1)
    #退出浏览器
    driver.quit()
    执行完成后在当前目录下可以看到如下结果:

     
    save_screenshot():
    此方法和上一种是一样的,只需要对takeScreenshot函数作如下修改即可:

    def takeScreenshot(driver,savePath,pictureName):
    picturePath = os.path.join(savePath, pictureName+'.png')
    try:
    #和get_screenshot_as_file方法类似
    driver.save_screenshot(picturePath)
    except Exception as e:
    print(traceback.print_exc())
    执行完成后在当前目录下可以看到如下结果:

    Pillow包:
    需要先在命令行下安装pillow包,命令如下:pip install Pillow,如果电脑中有多个python版本,而且想指定版本安装的话参考之前的文章指定python版本pip安装 

    #encoding=utf-8

    import os
    import time
    from datetime import datetime
    from selenium import webdriver
    import traceback

    def currentDate():
    '''生成当前日期字符串'''
    date = time.localtime()
    return '-'.join([str(date.tm_year), str(date.tm_mon),str(date.tm_mday)])

    def currentTime():
    '''生成当前时间字符串'''
    date = time.localtime()
    return '-'.join([str(date.tm_hour), str(date.tm_min),str(date.tm_sec)])


    def createDir():
    '''创建当前日期和当前时间目录'''
    path = os.path.dirname(os.path.abspath(__file__))
    dateDir = os.path.join(path,currentDate())
    #如果当前日期目录不存的话就创建
    if not os.path.exists(dateDir):
    os.mkdir(dateDir)
    timeDir= os.path.join(dateDir,currentTime())
    #如果当前时间目录不存的话就创建
    if not os.path.exists(timeDir):
    os.mkdir(timeDir)
    return timeDir

    def takeScreenshot(savePath,pictureName):
    picturePath = os.path.join(savePath, pictureName+'.png')
    try:
    from PIL import ImageGrab
    im=ImageGrab.grab()
    im.save(picturePath,"jpeg")
    except Exception as e:
    print(traceback.print_exc())

    # 获取浏览器驱动实例
    driver = webdriver.Chrome(executable_path='f:\chromedriver')
    #访问搜狗首页
    driver.get('http://www.sogou.com')
    time.sleep(3)
    #搜狗首页截图
    takeScreenshot(driver,createDir(),'sogou')
    time.sleep(1)
    #退出浏览器
    driver.quit()
    执行完成后在当前目录下可以看到如下结果:

    注意
    前两种方式截的是浏览器的相关页面,第3种是整个电脑桌面;
    创建时间或日期目录时%Y-%m-%d_%H:%M:%S这种是错误的格式,所有的包括 '' : / ? * < > |   这些特殊字符windows文件名无都无法使用,也无法保存,起名时需要注意,可以换成这种%Y-%m-%d_%H_%M_%S
    ————————————————
    版权声明:本文为CSDN博主「小小小小人ksh」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/kongsuhongbaby/java/article/details/87743133

  • 相关阅读:
    测试工具iometer, iozone, bonnie++
    python 解析properties文件的工具类
    Linux文件系统性能测试工具fdtree和iozone
    python的WEB容器框架
    iozone的介绍与使用
    Python 的 SOAP 实现
    在powerpoint2007里,如何改变模板里的背景图形
    python的接口和抽象类
    决策树算法总结
    C++ 重载、覆盖和隐藏
  • 原文地址:https://www.cnblogs.com/victory-0315/p/12762412.html
Copyright © 2011-2022 走看看