get_screenshot_as_file()提供一個截圖功能。
在自動化執行過程中,執行失敗後只能看到程式碼的執行錯誤,而不能直接看到ui上的錯誤,利用截圖儲存下來很容易的進行問題的判斷
先來執行一個通過的用例:
1 from selenium import webdriver 2 import time 3 import os 4 5 def test_search_baidu(): 6 driver = webdriver.Chrome() 7 driver.implicitly_wait(5) # 隱性等待5秒 8 driver.get('http://www.baidu.com') 9 10 word = '韓國 v 發覺你狗日價格每公斤' 11 driver.find_element_by_id('kw').send_keys(word) # 搜尋框中輸入word 12 driver.find_element_by_id('su').click() # 點選搜尋 13 time.sleep(1) 14 15 # 判斷,如果word在請求的頁面中則通過,不在則截圖 16 img_path = os.getcwd() # 儲存截圖的路徑 17 if word in driver.page_source: 18 print('testcase is pass!') 19 else: 20 driver.get_screenshot_as_file(img_path+"fail_img.png") 21 22 # 關閉瀏覽器 23 driver.quit() 24 25 26 # 執行程式 27 if __name__ == '__main__': 28 test_search_baidu() 29 # 結果:testcase is pass!
改下程式碼,讓用例執行成功後截圖,失敗後列印測試失敗:
1 from selenium import webdriver 2 import time 3 import os 4 5 def test_search_baidu(): 6 driver = webdriver.Chrome() 7 driver.implicitly_wait(5) # 隱性等待5秒 8 driver.get('http://www.baidu.com') 9 10 word = '韓國 v 發覺你狗日價格每公斤' 11 driver.find_element_by_id('kw').send_keys(word) # 搜尋框中輸入word 12 driver.find_element_by_id('su').click() # 點選搜尋 13 time.sleep(1) 14 15 # 判斷,如果word在請求的頁面中通過則截圖 16 img_path = os.getcwd() # 儲存截圖的路徑 17 print(img_path) 18 if word in driver.page_source: 19 driver.get_screenshot_as_file(img_path + "sucess_img.png") 20 else: 21 print('testcase is fail!') 22 23 # 關閉瀏覽器 24 driver.quit() 25 26 27 # 執行程式 28 if __name__ == '__main__': 29 test_search_baidu()
截圖如下: