在做測試的時候,空口無憑都是白掐,特别是自動化測試的時候,更需要圖檔來佐證自己發現的問題
話不多說,直接進入主題,技術就是這麼直白
Webdriver自帶截圖功能,get_screenshot_as_file(),save_screenshot(),使用起來還是蠻友善的
1. get_screenshot_as_file():
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)
driver.get("https://www.baidu.com")
time.sleep(1)
driver.get_screenshot_as_file("圖檔存放的路徑")
driver.quit()
注意路徑要用 \\ 分開 字尾名最好不要選擇 jpg
2.save_screenshot()
from selenium import webdriver
import time
driver = webdriver.Chrome()
driver.get("https://www.baidu.com")
driver.maximize_window()
time.sleep(2)
try:
picture_url=driver.save_screenshot('存放路徑')
print("%s :截圖成功!!!" % picture_url)
except BaseException as msg:
print("%s :截圖失敗!!!" % msg)
driver.quit()
3. 螢幕截圖并自定義裁剪大小
3.1 正常流程,打開浏覽器跳轉到百度
# 導入 Pillow 的 Image :pip install Pillow
from PIL import Image
# 導入浏覽器驅動
from selenium import webdriver
# 建立一個驅動
driver = webdriver.Chrome()
# 打開url,跳轉到指定頁面
driver.get("https://www.baidu.com")
3.2 截取目前螢幕大圖,另存為指定路徑的檔案
# 對目前螢幕進行截圖,并儲存為指定路徑檔案
driver.get_screenshot_as_file(r'圖檔存放的路徑.png')
3.3 定位元素,擷取 Xpath 或 CSS 路徑

3.4 擷取定位元素的位置、寬高參數
# 定位需要列印的元素
pic_ele = self.driver.find_element_by_xpath('//*[@id="s_lg_img"]')
# 元素位置、寬高參數擷取
left = pic_ele.location.get('x')
top = pic_ele.location.get('y')
right = pic_ele.size.get('width') + left
bottom = pic_ele.size.get('height') + top
3.5 讀取剛剛截取的大圖檔案,進行裁剪後儲存
# 讀取圖檔
img = Image.open(r'D:\screen_big.png')
# 根據元素的 Location和size 圖檔裁剪
pic_ele = img.crop((left, top, right, bottom))
# 儲存裁剪好的檔案圖檔
pic_ele.save(r'D:\screen_small.png')
# 退出浏覽器
self.driver.quit()
————————————————