Python自動化 web 自動化上傳文件,原來這么簡單


前言:

近期很多小伙伴在使用selenium做web自動化的過程中,遇到了文件上傳的功能,發現通過selenium無從下手。那么小編在這里給大家整理了一篇文章,只需要幾行簡單的代碼,就可以幫大家解決文件上傳這個問題。

文件上傳窗口分析

大家在面對文件上傳這個問題的時候,無從下手的原因,主要是selenium無法對文件上傳彈出窗口中的相關元素進行定位。以chrome瀏覽器為例,在網頁上點擊上傳文件,會彈出如下窗口,很顯然這個彈出窗口並不是瀏覽器中的窗口,而是windows系統中的彈窗,但selenium只能操作瀏覽器,無法來操作這種系統彈窗。那么這個時候我們就需要借助於可以操作系統窗口的工具來實現。

 

 

 

pywinauto的使用介紹

關於文件上傳的彈窗,在python中可以通過pywinauto模塊來進行操作,pywinauto是python中用來做的PC端自動化的一個庫。PC端的所有窗口都可以使用它來進行操作。關於pywinauto這邊不做過多介紹。之前我寫過相關的文章,也錄制過相關的使用視頻。這里主要來講一下如何通過它來實現文件上傳。在進行文件上傳的時候,我們需要這個窗口進行操作的一共是三個步驟:

操作步驟:
1、文件路徑填寫
2、文件名填寫
3、點擊打開

在進行操作之前,我們就需要定位到這幾個控件,1、路徑輸入框,2、文件輸入框、3、打開按鈕 關於控件定位操作的具體細節,大家可以去自行學習pywinauto的使用 具體定位代碼如下:

import pywinauto # 使用pywinautoc創建一個操作桌面窗口的對象 app = pywinauto.Desktop() # 選中文件上傳的窗口 dlg = app["打開"] # 選中文件地址輸入框 dlg["Toolbar3"] # 選中文件名輸入框 dlg["文件名(&N):Edit"] # 選擇打開按鈕 dlg["打開(&O)"] 

文件上傳小案例

小編事先找好了一個文件上傳的地址,這邊給大家來演示一個案例

1、第一步通過selenium打開文件上傳的地址,點擊上傳文件

from selenium import webdriver url= "https://www.layui.com/demo/upload.html" browser = webdriver.Chrome() # 訪問圖片上傳的網頁地址 browser.get(url=url) # 點擊圖片上傳按鈕,打開文件選擇窗口 browser.find_element_by_xpath("//button[@id='test2']").click() 

上述代碼執行結果如下:

 

 

 

2、通過pywinauto選擇上傳文件,點擊進行上傳

import pywinauto from pywinauto.keyboard import send_keys # 使用pywinauto來選擇文件 app = pywinauto.Desktop() # 選擇文件上傳的窗口 dlg = app["打開"] # 選擇文件地址輸入框,點擊激活 dlg["Toolbar3"].click() # 鍵盤輸入上傳文件的路徑 send_keys("C:\課件\images") # 鍵盤輸入回車,打開該路徑 send_keys("{VK_RETURN}") # 選中文件名輸入框,輸入文件名 dlg["文件名(&N):Edit"].type_keys("9.png") # 點擊打開 dlg["打開(&O)"].click()


免責聲明!

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



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