目的:python實現web自動化實現文件上傳
例子:在https://www.layui.com/demo/upload.html網站中點擊“上傳圖片”,需在windows系統彈窗進行文件上傳;
一、 環境准備:
1、python的web自動化環境
selenium的安裝:pip install selenium;
chromediver的下載及環境配置:下載的chromediver的驅動需與本地的谷歌瀏覽器版本相對應,並安裝Python的路徑中Scripts目錄中;
2、pywinauto的安裝
Pywinauto:python中的一個用於操作windows下GUI程序的庫,可以用來做PC自動化,web自動化可以借助它來實現文件上傳;
安裝命令:pip install pywinauto
二、selenium的基本使用
使用selenium打開瀏覽器訪問頁面
from selenium import webdriver
driver = webdriver.Chrome()
url = r"https://www.layui.com/demo/upload.html"
driver.get(url)
time.sleep(2)
三、文件窗口上傳的文析
1、對windows系統彈窗進行文件上傳的操作【如下圖所示】,具體分析:
- 文件路徑的填寫;
- 文件名的填寫;
- 文件名填寫后點擊“打開”
2、實現文件上傳的具體步驟:
- 借用python中的pywinauto模塊中Desktop庫(Desktop庫的作用:對windows系統桌面進行操作),則需導入相對應的模塊:from pywinauto import Desktop
- 借助控件精靈:ViewWizard,ViewWizard的作用:獲取窗口的控件信息;
3、文件上傳具體代碼實現:
from selenium import webdriver
import time
from pywinauto import Desktop #導入Desktop庫,實現對windows系統桌面進行操作
from pywinauto.keyboard import send_keys #導入send_keys庫,實現模擬鍵盤操作
#打開瀏覽器與訪問網頁
driver = webdriver.Chrome()
url = r"https://www.layui.com/demo/upload.html"
driver.get(url)
time.sleep(2)
#獲取上傳圖片的定位元素
driver.find_element_by_xpath('//button[@id="test1"]').click()
app = Desktop() #創建操作桌面的對象
dlg = app["打開"] #獲取彈窗的窗口標題
#dlg.print_ctrl_ids() 打印窗口的所有控件信息
dlg["地址: xiaominToolbar"].click() #獲取文件路徑填寫輸入框並點擊
send_keys("D:\圖片") #在文件路徑填寫輸入框輸入文件存在的路徑
send_keys("{VK_RETURN}") #輸入文件路徑后按回車鍵
dlg["文件名(&N):Edit"].type_keys("小小.jpg") #獲取文件名輸入框並填寫文件名
dlg["打開(&O)"].click() #獲取“打開”控件並點擊
time.sleep(3)
driver.close()
額外知識:
實現多文件上傳時,在多文件上傳時,需單引號(‘’)括起並文件名與文件名之間需用空格隔開,再最后一個文件名后添加一個空格;
dlg["文件名(&N):Edit"].type_keys(‘"小小.jpg" "小.jpg" ‘)