UI自動化-(web端窗口截圖文件上傳-實操入門)

1、窗口截圖

1. UI自動化中,為什么需要進行窗口截圖?

  1. 調試和故障排除:截圖可以直觀地查看界面的狀態,快速識別和解決問題。當自動化過程中出現錯誤或異常時,通過查看截圖可以確定是否是界面元素的問題,例如元素未找到、位置不正確等。
  2. 記錄測試結果:截圖可以作為測試結果的一部分,用于記錄特定時間點界面的樣子。這對于測試報告和文檔非常有用,可以提供可視化的證據,證明測試過程中界面的顯示是否正確。
  3. 驗證界面布局和樣式:在某些情況下,自動化測試需要驗證界面的布局、樣式或特定元素的顯示是否符合預期。通過截圖,可以比較實際顯示與預期的樣子,確保界面的正確性和一致性。
  4. 與其他人溝通和協作:截圖可以方便地與團隊成員、產品經理或其他相關人員共享和交流。通過展示截圖,可以更好地理解問題或測試結果,促進協作和問題的解決。
  5. 自動化文檔生成:有些自動化框架或工具可以自動將截圖與測試用例或報告相關聯,生成更詳細和直觀的文檔。這有助于維護和更新測試資產,并提供給其他人參考。

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 自動化中進行文件上傳的場景:

  1. 功能測試:許多 Web 應用程序都提供了文件上傳的功能,例如上傳圖片、文檔、音頻或視頻等。通過自動化文件上傳,可以確保該功能正常工作,包括文件的選擇、上傳過程和上傳后的處理。
  2. 數據驗證:上傳的文件可能需要滿足一定的格式、大小或其他限制條件。自動化上傳可以幫助驗證這些限制,確保上傳的文件符合預期的要求。
  3. 回歸測試:在應用程序的開發過程中,文件上傳功能可能會受到修改或更新。通過自動化測試,可以在每次迭代中快速驗證文件上傳是否仍然正常工作,以確保沒有引入新的問題。
  4. 提高測試效率:手動執行文件上傳操作可能會很耗時,尤其是在需要上傳大量文件或在多個不同的環境中進行測試時。自動化上傳可以大大提高測試的效率和重復性。
  5. 集成測試:如果文件上傳是與其他功能或系統集成的一部分,自動化上傳可以確保整個集成過程的順暢性和正確性。

2. 應用舉例

在 Web 端實現 UI 自動化的文件上傳

  1. 選擇自動化工具:選擇適合的自動化測試工具,例如 Selenium。
  2. 定位上傳元素:使用選擇器(如 XPath、CSS 選擇器或 ID)找到文件上傳的輸入元素。
  3. 設置文件上傳路徑:將需要上傳的文件路徑傳遞給自動化工具。
  4. 執行上傳操作:使用自動化工具提供的方法來模擬文件上傳的操作。

示例:

  • 啟動 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() 方法將文件路徑傳遞給輸入框,觸發了上傳文件操作。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/717361.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/717361.shtml
英文地址,請注明出處:http://en.pswp.cn/news/717361.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ opencv 學習

文章目錄 1、創建窗口2、讀取圖片3、視頻采集4、Mat的使用5、異或操作6、通道分離,通道合并7、色彩空間轉換8、最大值、最小值9、繪制圖像10、多邊形繪制11、隨機數12、鼠標實時繪制矩形13、歸一化14、resize操作15、旋轉翻轉16、視頻操作17、模糊操作18、高斯模糊操…

SpringBoot整合MyBatis實現增刪改查

?作者簡介:大家好,我是Leo,熱愛Java后端開發者,一個想要與大家共同進步的男人???? ??個人主頁:Leo的博客 ??當前專欄: 循序漸進學SpringBoot ?特色專欄: MySQL學習 ??本文內容: SpringBoot整合MyBatis實現增刪改查 ??個人知識庫: Leo知識庫,歡迎大家訪…

mysql之 case when

1 簡單 case 函數,IF函數 格式: CASE input_expression WHEN when_expression THENresult_expression [...n ] [ ELSEelse_result_expression ENDIF(條件,True結果,False結果)2 條件表達式 可嵌套多層,類似于 if … else if … else … end…

Java進階-IO(1)

進入java IO部分的學習,首先學習IO基礎,內容如下。需要了解流的概念、分類還有其他一些如集合與文件的轉換,字符編碼問題等,這次先學到字節流的讀寫數據,剩余下次學完。 一、IO基礎 1、背景 1.1 數據存儲問題 變量…

代碼隨想錄day11(1)字符串:反轉字符串中的單詞 (leetcode151)

題目要求:給定一個字符串,將其中單詞順序反轉,且每個單詞之間有且僅有一個空格。 思路:因為本題沒有限制空間復雜度,所以首先想到的是用split直接分割單詞,然后將單詞倒敘相加。 但如果想讓空間復雜度為O…

芯來科技發布最新NI系列內核,NI900矢量寬度可達512/1024位

參考:芯來科技發布最新NI系列內核,NI900矢量寬度可達512/1024位 (qq.com) 本土RISC-V CPU IP領軍企業——芯來科技正式發布首款針對人工智能應用的專用處理器產品線Nuclei Intelligence(NI)系列,以及NI系列的第一款AI專用RISC-V處理器CPU IP…

反向迭代器

反向迭代器 以list為例,我們完全可以再添加一個__list_reverse_iterator結構體,只需要修改和–的邏輯 template <class T, class Ref, class Ptr> struct __list_reverse_iterator {...self& operator(){_node _node->_prev;return *this;}self operator(int){…

Android 14.0 Launcher3定制化之桌面分頁橫線改成圓點顯示功能實現

1.前言 在14.0的系統rom產品定制化開發中&#xff0c;在進行launcher3的定制化中&#xff0c;在雙層改為單層的開發中&#xff0c;在原生的分頁 是橫線&#xff0c;而為了美觀就采用了系統原來的另外一種分頁方式&#xff0c;就是圓點比較美觀&#xff0c;接下來就來分析下相關…

網絡爬蟲部分應掌握的重要知識點

目錄 一、預備知識1、Web基本工作原理2、網絡爬蟲的Robots協議 二、爬取網頁1、請求服務器并獲取網頁2、查看服務器端響應的狀態碼3、輸出網頁內容 三、使用BeautifulSoup定位網頁元素1、首先需要導入BeautifulSoup庫2、使用find/find_all函數查找所需的標簽元素 四、獲取元素的…

基于springboot+vue的健身房管理系統

博主主頁&#xff1a;貓頭鷹源碼 博主簡介&#xff1a;Java領域優質創作者、CSDN博客專家、阿里云專家博主、公司架構師、全網粉絲5萬、專注Java技術領域和畢業設計項目實戰&#xff0c;歡迎高校老師\講師\同行交流合作 ?主要內容&#xff1a;畢業設計(Javaweb項目|小程序|Pyt…

●139.單詞拆分 ● 關于多重背包,你該了解這些! ●背包問題總結篇!

●139.單詞拆分 物品&#xff1a;wordDict里面的單詞&#xff1b;背包容量&#xff1a;s.size()。 1.dp[j]含義。dp[j]true表示字符串前j個可以拆分成字典中的單詞。dp[s.size()] 就是最后的結果&#xff0c;整個字符串能&#xff08;true&#xff09;不能&#xff08;false…

Docker 創建容器并指定時區

目錄 1. 通過環境變量設置時區&#xff08;推薦&#xff09;2. 掛載宿主機的時區文件到容器中3. 總結 要在 Docker 容器中指定時區&#xff0c;可以通過兩種方式來實現&#xff1a; 1. 通過環境變量設置時區&#xff08;推薦&#xff09; 在 Docker 運行時&#xff0c;可以通…

NumPy數據處理詳解的筆記1

NumPy數據處理詳解的筆記1 第1章NumPy基礎 NumPy是用于處理多維數組的數值運算庫&#xff0c;不僅可用于 機器學習&#xff0c;還可以用于圖像處理&#xff0c;語言處理等任務。 1.1 NumPy的基礎與安裝方法 1.1.1 NumPy入門 NumPy是Python中進行科學計算所必備的基礎軟件庫…

CentOS安裝Docker(黑馬學習筆記)

Docker 分為 CE 和 EE 兩大版本。CE 即社區版&#xff08;免費&#xff0c;支持周期 7 個月&#xff09;&#xff0c;EE 即企業版&#xff0c;強調安全&#xff0c;付費使用&#xff0c;支持周期 24 個月。 Docker CE 分為 stable test 和 nightly 三個更新頻道。 官方網站上…

文件底層的理解之緩沖區

目錄 一、緩沖區的初步認識 二、向文件中寫數據的具體過程 三、緩沖區刷新的時機 一、緩沖區的初步認識 緩沖區其實就是一塊內存區域&#xff0c;采用空間來換時間&#xff0c;可以提高使用者的效率。我們一直說的緩沖區其實是語言層面上的緩沖區&#xff0c;其實操作系統內部…

JVM 第一部分 JVM兩種解釋器 類加載過程和類加載器

JVM是跨平臺跨語言的虛擬機&#xff0c;不直接接觸硬件&#xff0c;位于操作系統的上一層 跟字節碼文件直接關聯&#xff0c;和語言沒有關系 一次編譯成字節碼文件&#xff0c;多次執行 虛擬機可以分成三部分&#xff1a;類加載器&#xff0c;運行時數據區&#xff0c;執行引…

TDengine 在 DISTRIBUTECH 分享輸配電數據管理實踐

2 月 27-29 日&#xff0c;2024 美國國際輸配電電網及公共事業展&#xff08;DISTRIBUTECH International 2024&#xff09;在美國-佛羅里達州-奧蘭多國家會展中心舉辦。作為全球領先的年度輸配電行業盛會&#xff0c;也是美洲地區首屈一指的專業展覽會&#xff0c;該展會的舉辦…

C++從零開始的打怪升級之路(day41)

這是關于一個普通雙非本科大一學生的C的學習記錄貼 在此前&#xff0c;我學了一點點C語言還有簡單的數據結構&#xff0c;如果有小伙伴想和我一起學習的&#xff0c;可以私信我交流分享學習資料 那么開啟正題 今天分享的是關于繼承的知識點 1.派生類的默認成員函數 首先我…

【和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告

【&#x1f40b;和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告 文章目錄 【&#x1f40b;和鯨冬令營】通過數據打造爆款社交APP用戶行為分析報告1 業務背景2 數據說明3 數據探索性分析4 用戶行為分析4.1 用戶屬性與行為關系分析4.2 轉化行為在不同用戶屬性群體中的分布…

值類型和引用類型詳解(C#)

可能你對值類型和引用類型還不太了解。 值類型和引用類型&#xff0c;是c#比較基礎&#xff0c;也必須掌握的知識點&#xff0c;但是也不是那么輕易就能掌握&#xff0c;今天跟著我一起來看看吧。 典型類型 首先我們看看這兩種不同的類型有哪些比較典型的代表。 典型值類型…