欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

selenium---屏幕截图

程序员文章站 2024-02-06 22:51:10
...

前言

通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据给开发,可以在代码中进行添加截图操作,通过截图把我们想要的内容截图下来。那selenium中如何操作呢?
截图

selenium截图方法有很多种,简单的列举几种:
方法一:

获取当前屏幕截图: get_screenshot_as_file(filename) ,filename为图片名称,需要填写完整路径。

这里需要注意图片后缀只能是png,如果是jpg或者其他格式的话,会报错,但是程序还是回正常执行。

报错内容:

UserWarning: name used for saved screenshot does not match file type. It should end with a `.png` extension "type. It should end with a `.png` extension", UserWarning) 
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/qican/')
time.sleep(2)
# 截图保存在本地
driver.get_screenshot_as_file('123.png')

方法二:

获取当前屏幕截图,保存格式为base64: get_screenshot_as_base64() ,base64保存的图片多数用来放入html报告中。

这里需要导入base64模块,使用base64模块展示图片

from selenium import webdriver
import time
import base64
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/qican/')
time.sleep(2)
# 通过base64进行保存图片
x = driver.get_screenshot_as_base64()
image = base64.b64decode(x)
file = open('1.jpg',"wb")
file.write(image)

方法三:

获取当前窗口屏幕截图的截图。 save_screenshot(filename) ,filename:表示图片名称。

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/qican/')
time.sleep(2)
# 截图保存在本地
driver.save_screenshot('123.png')

方法四:

以二进制的方式进行获取当前屏幕截图: get_screenshot_as_png()

这里在通过打开二进制图片的方法进行保存在本地

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.cnblogs.com/qican/')
time.sleep(2)
# 通过二进制的方法进行保存图片到本地
x = driver.get_screenshot_as_png()
file = open('12.png',"wb")
file.write(x)

这里就不把截图成功结果发出来了,大家可以手动试试

异常捕捉

通常错误截图大多数用在用例执行失败的时候,安静通过百度输入框填写错误的元素进行定位,然后通过异常捕捉进行截取图片内容。

from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/')
try:
    # 定位元素错误
    driver.find_element_by_id('anjing').send_keys('测试-安静')
except Exception as msg:
    # 时间戳名称,防止覆盖
    name = time.strftime("%H.%M.%S")
    # 异常截图保存在本地
    driver.get_screenshot_as_file('%s.png'%name)

这里我们可以查看发现图片已经截取下来了,这里没有打印错误信息。
selenium---屏幕截图
点赞关注~~持续分享,加入我们,642830685,群内免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。