天天看點

selenium U自動化測試之檔案上傳

前言

1、被測産品中檔案上傳的功能非常普遍,一般情況下需要将準備好的檔案放在預定的路徑下,然後在自動化測試的腳本中,去預置的路徑下擷取檔案即可。

2、selenium UI自動化中檔案上傳的兩種方式:

①被測産品的UI界面中存在可輸入檔案路徑的input輸入框(該input框元素可能是可見元素,也有可能是隐藏元素),可以通過 send_keys('檔案路徑') 函數。

②被測産品是采用調用本地Windows檔案系統視窗的方式進行檔案上傳。(該方式進行檔案上傳時,selenium工具無能為力。selenium工具是通過發送js腳本來驅動浏覽器,而Windows系統視窗就完全不在Selenium的能力範圍内),調用windows作業系統的UI自動化架構。

3、當被測産品與Windows系統進行互動時,就需要使用C端自動化的相關架構,這類架構有很多選擇,此次選擇的是PyAutoGUI。

詳解

一、通過send_keys方法(該方法隻适用于input标簽)

1、檢視上傳按鈕的元素标簽為input标簽,調用 send_keys() 方法傳入檔案路徑即可,無需模拟彈出windows選擇框且選擇檔案的過程。

2、通過該方法可以簡單、高效的實作選擇檔案的目的,避免将處理思路卡在如何選擇檔案這個問題上。

3、檔案上傳的input框實作方式如下:

selenium U自動化測試之檔案上傳

4、selenium UI自動化代碼如下:

from selenium import webdriver
import time

driver = webdriver.Chrome()
driver.get('http://sahitest.com/demo/php/fileUpload.htm')
driver.implicitly_wait(10)

driver.find_element_by_css_selector('form>#file').send_keys(r'C:\Users\Administrator\Desktop\1.txt')
driver.find_element_by_css_selector('form>input[type="submit"]').click()

time.sleep(3)
driver.quit()      

二、PyAutoGUI上傳檔案方式

pyautogui為第三方包,需要 pip install pyautogui 進行安裝後,在腳本中 import 導入即可使用。

執行個體如下:

import time,pyautogui
 
def uploadWinFile(self,filepath):
    '''
    通過Windows系統上傳檔案
    '''
    try:
        pyautogui.write(filepath) # 輸入檔案絕對路徑
        time.sleep(2) 
        pyautogui.press('enter',2) # 按2次Enter鍵(按2次是為了防止出錯)
    except Exception as e:
        loggerHandler.logger.error(e)
        e.args = ('上傳檔案操作異常',)
        raise e
    else:
        return filepath      

三、AutoIt方式處理上傳檔案

四、pywin32庫,識别對話框句柄,進而操作

五、SendKeys庫,不穩定,不推薦

六、keybd_event,跟2類似,不過是模拟按鍵,ctrl+a,ctrl+c, ctrl+v…

多檔案上傳

1、多檔案上傳就是在檔案路徑框裡用引号括起單個路徑,然後用空格隔開多個路徑。例如: “D:\a.txt” “D:\b.txt” 

注意:在多檔案上傳時,隻有多個檔案在同一路徑下,才可以這樣使用。例如: “C:\a.txt” “D:\b.txt” 該格式不對,不能實作多檔案上傳。

2、多檔案上傳原理

selenium U自動化測試之檔案上傳

繼續閱讀