天天看點

Selenium - 截圖

在做測試的時候,空口無憑都是白掐,特别是自動化測試的時候,更需要圖檔來佐證自己發現的問題

話不多說,直接進入主題,技術就是這麼直白

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 路徑

Selenium - 截圖

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()
————————————————
      

繼續閱讀