通常在执行自动化用例的时候,是不会一直在旁边检测,报错的时候想要留下一些证据给开发,可以在代码中进行添加截图操作,通过截图把我们想要的内容截图下来。那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)
这里我们可以查看发现图片已经截取下来了,安静这里没有打印错误信息。
安静通过小小的例子介绍了web自动化中的截图功能,小伙伴们可以自己动手写一写。孰能生巧。
原文:https://www.cnblogs.com/qican/p/13680437.html