1、窗口截圖
1. UI自動化中,為什么需要進行窗口截圖?
- 調試和故障排除:截圖可以直觀地查看界面的狀態,快速識別和解決問題。當自動化過程中出現錯誤或異常時,通過查看截圖可以確定是否是界面元素的問題,例如元素未找到、位置不正確等。
- 記錄測試結果:截圖可以作為測試結果的一部分,用于記錄特定時間點界面的樣子。這對于測試報告和文檔非常有用,可以提供可視化的證據,證明測試過程中界面的顯示是否正確。
- 驗證界面布局和樣式:在某些情況下,自動化測試需要驗證界面的布局、樣式或特定元素的顯示是否符合預期。通過截圖,可以比較實際顯示與預期的樣子,確保界面的正確性和一致性。
- 與其他人溝通和協作:截圖可以方便地與團隊成員、產品經理或其他相關人員共享和交流。通過展示截圖,可以更好地理解問題或測試結果,促進協作和問題的解決。
- 自動化文檔生成:有些自動化框架或工具可以自動將截圖與測試用例或報告相關聯,生成更詳細和直觀的文檔。這有助于維護和更新測試資產,并提供給其他人參考。
2. 應用舉例
- 當程序運行出錯時,通過截圖文件能夠更直觀的知道具體是哪個操作步驟出錯 。
截圖方法: ?driver.get_screenshot_as_file(filename)
-
- 截圖的文件名必須是以png結尾
- filename中的文件目錄需要手動創建
- 示例方法
-
- 定義截圖保存的路徑 screenshot_path。
- 啟動 WebDriver 并打開要操作的網頁。
- 在 try/except 代碼塊中,編寫可能會引發錯誤的操作代碼。
- 如果在執行操作過程中發生錯誤,將記錄錯誤信息,并使用 driver.get_screenshot_as_file 方法截圖并保存到指定路徑。截圖的文件名根據當前時間生成,并以 .png 結尾。
代碼示例:
from selenium import webdriver
import time# 定義截圖保存的路徑
screenshot_path = "yourScreenshotDirectory/"# 啟動 WebDriver
driver = webdriver.Chrome()# 打開要操作的網頁
driver.get("https://example.com")# 執行操作步驟...try:# 編寫業務代碼print("業務代碼")# 編寫可能會引發錯誤的操作print("可能會引發錯誤的操作")
except Exception as e:# 記錄錯誤信息print(f"發生錯誤:{e}")# 截圖并保存到指定位置screenshot_filename = f"error_{time.strftime('%Y%m%d_%H%M%S')}.png"driver.get_screenshot_as_file(screenshot_path + screenshot_filename)# 關閉 WebDriverdriver.quit()
在上述代碼示例中,首先定義了截圖保存的路徑 screenshot_path。然后,啟動 WebDriver 并打開要操作的網頁。在 try/except 代碼塊中,編寫可能會引發錯誤的操作代碼。
如果在執行操作過程中發生錯誤,將記錄錯誤信息,并使用 driver.get_screenshot_as_file 方法截圖并保存到指定路徑。截圖的文件名根據當前時間生成,并以 .png 結尾。
2、文件上傳
1. 在 UI 自動化中進行文件上傳的場景:
- 功能測試:許多 Web 應用程序都提供了文件上傳的功能,例如上傳圖片、文檔、音頻或視頻等。通過自動化文件上傳,可以確保該功能正常工作,包括文件的選擇、上傳過程和上傳后的處理。
- 數據驗證:上傳的文件可能需要滿足一定的格式、大小或其他限制條件。自動化上傳可以幫助驗證這些限制,確保上傳的文件符合預期的要求。
- 回歸測試:在應用程序的開發過程中,文件上傳功能可能會受到修改或更新。通過自動化測試,可以在每次迭代中快速驗證文件上傳是否仍然正常工作,以確保沒有引入新的問題。
- 提高測試效率:手動執行文件上傳操作可能會很耗時,尤其是在需要上傳大量文件或在多個不同的環境中進行測試時。自動化上傳可以大大提高測試的效率和重復性。
- 集成測試:如果文件上傳是與其他功能或系統集成的一部分,自動化上傳可以確保整個集成過程的順暢性和正確性。
2. 應用舉例
在 Web 端實現 UI 自動化的文件上傳:
- 選擇自動化工具:選擇適合的自動化測試工具,例如 Selenium。
- 定位上傳元素:使用選擇器(如 XPath、CSS 選擇器或 ID)找到文件上傳的輸入元素。
- 設置文件上傳路徑:將需要上傳的文件路徑傳遞給自動化工具。
- 執行上傳操作:使用自動化工具提供的方法來模擬文件上傳的操作。
示例:
- 啟動 WebDriver 并打開上傳頁面。
- 通過 class屬性 定位到文件上傳的元素,并將文件路徑設置為要上傳的文件。
- 使用 send_keys 方法模擬文件上傳的操作。
代碼示例:
# 導包
import time
from selenium import webdriver# 實例化瀏覽器驅動
driver = webdriver.Chrome()
driver.maximize_window()# 打開baidu網站
driver.get("https://www.baidu.com")# 定位到百度輸入框中的"按圖片搜索"按鈕
time.sleep(3)
element = driver.find_element_by_css_selector(".soutu-btn")# 點擊"按圖片搜索"按鈕,進入圖片上傳頁面
element.click()# 定位到"選擇文件"元素位置
upload_element = driver.find_element_by_css_selector(".upload-pic")# 設置文件上傳路徑
file_path = "/Users/example/Desktop/image.jpg" # 替換為實際的文件路徑# 執行文件上傳
upload_element.send_keys(file_path)# 等待3S
time.sleep(3)# 退出瀏覽器驅動
driver.quit()
在上述代碼示例中,首先打開瀏覽器并訪問上傳頁面。然后,通過CSS 定位到文件上傳輸入框,并使用 send_keys() 方法將文件路徑傳遞給輸入框,觸發了上傳文件操作。