上傳文件是比較常見的web功能之一,但webdriver沒有提供專門用於上傳的方法,如何實現上傳操作關鍵在於上傳文件的思路
一般web頁面的上傳功能的操作需要點擊“上傳”按鈕后打開本地的window窗口,從窗口中選擇本地文件進行上傳,而webdriver是無法操作Windows控件的,所以對於web頁面的上傳功能實現有以下兩種方法。
1、普通上傳:普通的附件上傳是將本地文件的路徑作為一個值放在input標簽中,通過form表單將這個值提交給服務器
2、插件上傳:一般是指基於Flash、JavaScript或Ajax等技術所實現的上傳功能
Send_keys上傳
通過這種方法上傳可避免操作Windows控件的步驟。只要找到上傳的input標簽,那么就基本都可以通過send_keys()方法向其輸入一個文件地址來實現上傳。如:
from selenium import webdriver
import os
driver = webriver.Chrome()
driver.get('http://www.baidu.com')
#定位上傳按鈕,添加本地文件
driver.find_element_by_name('file').send_keys('d:/upload_file.txt')
driver.quit()
第三方工具上傳
非input標簽的上傳,則需要借助第三方工具winspy,或者python pywin32和spy++、sendkeys第三方庫和autolt
以下是固定的代碼,復制即可使用