<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
上傳有兩種情況:
那這裡針對以上兩種情況分別介紹一下具體的解決方法。
定位到元素,然後直接使用send_keys(檔案路徑)輸入路徑,比較簡單。
from selenium import webdriver driver = webdriver.Chrome() driver.get("http://xxxx") driver.maximize_window() # 定位上傳檔案元素 input_file = driver.find_element_by_id("xxx") # 上傳檔案 input_file.send_keys(r"D:learnxx.txt")
非input標籤的上傳,則需要藉助第三方工具。pywin32就是這樣的一個第三方庫,主要是方便python開發者快速呼叫windows API的一個模組庫,可以識別上傳對話方塊控制程式碼進而操作。
安裝命令:pip install pywin32。
從上面的上傳視窗,及WinSpy工具視窗,可以得出控制關係圖如下:
從上圖可以看出:
我們需要一步一步定位,從第一層開始往下去找,找到對應的視窗然後進行操作,步驟說明如下:
以上三步的相關函數說明如下:
以下是封裝好的上傳函數,因為window的上傳視窗是固定不變的,我們只需要封裝好一個類知道如何去呼叫即可,不需要理解它的處理細節,但如果你有興趣可以深入瞭解一下。
import win32gui import win32con # edit - combobox - comboBoxEx32 - #32770 編輯框在第四級 # button - #32770 開啟按鈕在第二級 # 前提:window上傳視窗已經出現,最好sleep 1-2秒等待視窗出現 def upload(filepath, browser_type="chrome"): if browser_type == "chrome": title = "開啟" else: title = "" # 找元素 # 從一級開始找,一級視窗「#32770」,「開啟」 dialog = win32gui.FindWindow("#32770", title) # FindWindow用於找大視窗 # 二級之後都用FindWindowEx,需要四個引數, # 1、元素的父親,2、從第一個子代開始找元素,3、元素的型別名(class),4、元素的文字值 comboBoxEx32 = win32gui.FindWindowEx(dialog, 0, "ComboBoxEx32", None) # 二級 comBox = win32gui.FindWindowEx(comboBoxEx32, 0, "ComboBox", None) # 三級 # 編輯框 edit = win32gui.FindWindowEx(comBox, 0, 'Edit', None) # 四級 # 開啟按鈕 button = win32gui.FindWindowEx(dialog, 0, 'Button', '開啟(&0)') # 二級 # 往編輯框輸入檔案路徑 win32gui.SendMessage(edit, win32con.WM_SETTEXT, None, filepath) # 傳送檔案路徑 win32gui.SendMessage(dialog, win32con.WM_COMMAND, 1, button) # 點選開啟按鈕 if __name__ == '__main__': upload('D:\test.txt')
還有一種更方便的方法,就是藉助第三方工具pyautogui,pyautogui是一個純Python的GUI自動化工具,其目的是可以用程式自動控制滑鼠和鍵盤操作,並且支援多平臺(Windows,OS X,Linux)。強烈推薦!
下面以舉例的html為例,需要先把該程式碼儲存成html檔案,後續直接存取這個本地html檔案:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1> hello world </h1> <input type="file" name="mfile"> </body> </html>
安裝模組: pip install pyautogui,
操作只需要兩步:
import os import time import pyautogui as ui from selenium import webdriver driver = webdriver.Chrome() driver.implicitly_wait(20) # 隱式等待 dir = os.getcwd() html_dir = os.path.join(dir, 'demo.html') driver.get(html_dir) file_elem = driver.find_element_by_name('mfile') file_elem.click() # 系統之間要等待 time.sleep(1) file_dir = os.path.join(dir, 'test.txt') # 要上傳的檔案路徑 # 寫入檔案 ui.write(file_dir) # 直接呼叫寫入 time.sleep(0.5) # 輸入確認鍵, presses表示按的次數,按一次不會生效,有可能是執行太快,建議presses=2 ui.press('enter', presses=2) time.sleep(2) driver.quit()
不管是使用哪種上傳方式,只要是作業系統的上傳視窗,操作之前記得先等待一下。
今天的文章就到這裡了喲,需要獲得下面福利的小夥伴可以私信我關鍵字“資料”獲取喲。
專案實戰
app專案,銀行專案,醫藥專案,電商,金融
大型電商專案
全套軟體測試自動化測試教學視訊
300G教學資料下載【視訊教學+PPT+專案原始碼】
全套軟體測試自動化測試大廠面經
python自動化測試++全套模板+效能測試
到此這篇關於python+selenium的web自動化上傳操作的實現的文章就介紹到這了,更多相關python自動化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45