前言
通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据给开发,可以在代码中进行添加截图操作,通过截图把我们想要的内容截图下来。那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)
这里我们可以查看发现图片已经截取下来了,这里没有打印错误信息。
点赞关注~~持续分享,加入我们,642830685,群内免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。