前言
通常在執行自動化用例的時候,是不會一直在旁邊檢測,報錯的時候想要留下一些證據給開發,可以在代碼中進行添加截圖操作,通過截圖把我們想要的內容截圖下來。那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自動化中的截圖功能,小伙伴們可以自己動手寫一寫。孰能生巧。