selenium+python自動化測試--參數化上傳文件


前言:這個是在悠悠博客中學到的方法,本來不打算記錄的,但是由於編碼時很粗心,報錯解決了一個多小時,所以還是記錄下,以便記憶更深刻。

適用場合:非input文件上傳

 

1、環境准備

 在官網上下載autoit工具並安裝(根據引導安裝即可),下載地址: https://www.autoitscript.com/site/autoit/downloads/

2、在開始菜單中查看安裝成功后的文件

3、AutoIt里面幾個菜單功能介紹:

  • SciTE Script Editor 編輯器,在這里編寫AutoIt腳本
  • AutoIt Windows Info 元素定位器,用於識Windows控件信息
  • Run Script 執行AutoIt腳本
  • Compile Script to.exe 將AutoIt生成 .exe 可執行文件

 4、定位本地文件所在位置

操作步驟:

(1)點擊上傳按鈕

(2)進入要上傳文件所在的位置

(3)在開始中打開AutoIt Windows Info 工具

(4)拖動Finder Tool 至本地彈框的文件名輸入框中,AutoIt Windows Info中顯示如下圖:

(5)拖動Finder Tool 至本地彈框的打開按鈕上,AutoIt Windows Info中顯示如下圖:

5、在開始中打開 SciTE Script Editor編輯器,編寫執行腳本

autoit幾個常用的語法:

  • WinActivate("title") 聚焦到指定活動窗口
  • ControlFocus ( "title", "窗口文本", controlID) 設置輸入焦點到指定窗口的某個控件上;
  • WinWait ( "title" , "窗口文本" , 超時時間 ) 暫停腳本的執行直至指定窗口存在(出現)為止;
  • ControlSetText ( "title", "窗口文本", controlID, "新文本" ) 修改指定控件的文本;
  • Sleep ( 延遲 ) 使腳本暫停指定時間,單位是毫秒;
  • ControlClick ( "title", "窗口文本", 控件ID , 按鈕 , 點擊次數 ) 向指定控件發送鼠標點擊命令;

命令行參數:

  • $CmdLine[0] 獲取的是命令行參數的總數
  • $CmdLine[1]~$CmdLine[63] 獲取的是命令行參數第1到第63位,這個方式最多只能獲取63個參數,不過正常情況下是足夠用的
  • $CmdLineRaw 獲取的是未拆分的所有參數,是一個長字符串,這種情況下不局限與63個參數

 

注意:編寫執行腳本時一定帶上instance這個參數,否則無法跳到要上傳的文件路徑!!!

將以上編寫好的執行腳本另存為   .au3 結尾的文件

6、將執行腳本轉換為  .exe結尾的文件

在開始菜單中打開  這個工具,選擇執行腳本和exe文件保存路徑,點擊“convert”按鈕即可

 

 下圖為生成的 .exe 文件

  + R  快捷鍵打開cmd命令窗口,拖入剛轉化的exe文件及要上傳的文件路徑(兩個路徑間有個空格),回車,如下圖則執行成功

7、代碼編寫

from selenium import webdriver from common.base import Base import time import os base_url = "url地址"

class ImportRisk(Base): def importRisk(self): '''風險模板導入''' node = ("css selector", ".bp3-tree-node-content.bp3-tree-node-content-0.sc-eNQAEJ.geXpPO") self.move_to_element(node) # 鼠標右鍵
 self.move_context_click(node) # 選擇導入
        menu = ("css selector",".bp3-menu>li:nth-child(1)") self.click(menu) #點擊上傳按鈕
        upfile = ("css selector",".bp3-file-upload-input.bp3-file-upload-input-custom-text") self.click(upfile) time.sleep(2) #上傳文件
        file_path = "D:\EprosliteUI\common\風險模板.xls" os.system(r"D:\EprosliteUI\common\upfile.exe %s" %file_path ) time.sleep(5) #點擊導入
        submit = ("name","Submit") self.click(submit) if __name__ == '__main__': driver = webdriver.Chrome() driver.get(base_url) driver.maximize_window() time.sleep(2) risk = ImportRisk(driver) risk.importRisk() time.sleep(2) driver.quit()

 

附:文章參考及批量上傳地址:https://www.cnblogs.com/yoyoketang/p/7653221.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM