Python+selenium 操作檔案上傳和下載

Selenium實現檔案上傳

(1)頁面中得檔案上傳說明

檔案上傳是web頁面上很常見的一個功能,用指令碼去實現檔案上傳很簡單

一般場景:在頁面中得上傳按鈕是一個標籤,其中type屬性為type=‘file’,這種可以用Selenium提供得send_keys()方法解決

檔案上傳示例:

檔案上傳

“”“1。學習目標: 掌握檔案上傳功能操作2。操作步驟 此上傳方式適用大多數情況。 上傳檔案標籤為input型別,並且type=file時可使用此方式上傳。 使用send_keys(“需要上傳的檔案的路徑”)3。需求 在頁面中,實現檔案上傳4。總結 4。1 在上傳檔案的時候,對檔案型別,大小等做充分驗證。 4。2 在執行上傳檔案指令碼時,加一定的等待時間,sleep()。 4。3 大多數上傳檔案都是input型別並且type=file。 4。4 對於非input標籤的上傳檔案功能,使用Sendkeys庫來實現。“”“# 1。匯入seleniumfrom selenium import webdriverfrom time import sleepimport os# 2。開啟瀏覽器driver = webdriver。Chrome()# 3。開啟註冊A頁面url = ”file:///“ + os。path。abspath(”。/1。html“)driver。get(url)sleep(2)# 4。上傳檔案# 4。1 定位上傳檔案按鈕upfile = driver。find_element_by_name(”upfile“)# 4。2 使用send_keys方法上傳檔案upfile。send_keys(r”C:\Users\L\Desktop\測試上傳檔案。txt“)sleep(5)# 5。關閉瀏覽器driver。quit()

提示:

另外一種非標籤的上傳檔案按鈕,實現起來比較困難,可以藉助autoit工具或者SendKeys第三方庫來實現。

上傳過程一般要開啟一個系統的window 視窗,從視窗選擇本地檔案新增。所以,一般會卡在如何操作本地window 視窗

總結:

其實上傳本地檔案沒我們想的那麼複雜,只要定位上傳按鈕,通send_keys()方法新增本地檔案路徑就可以了。絕對路徑和相對路徑都可以,關鍵是上傳的檔案存在。

二、檔案下載

使用selenium。webdriver實現下載檔案功能,只需要配置一下瀏覽器的引數即可實現

1、Firefox瀏覽器檔案下載

步驟:

對於Firefox,需要我們設定其Profile:透過FirefoxProfile()方法建立一個Firefox自定義配置資訊例項。

設定Firefox瀏覽器下載相關的自定義配置資訊到Profile例項中。

啟動Firefox,並把自定義配置Profile例項儲存到瀏覽器物件中。

訪問下載網站,進行下載。

示例:

需求:下載Firefox瀏覽器驅動檔案

”“”1。學習目標 瞭解使用火狐瀏覽器實現檔案下載2。操作步驟(語法) 2。1 建立Firefox瀏覽器配置資訊物件 webdriver。FirefoxProfile() 2。2 設定Firefox瀏覽器下載相關的自定義配置資訊 2。3 建立Firefox瀏覽器物件,並把自定義配置資訊儲存到瀏覽器物件中 2。4 訪問下載網站 2。5 進行下載3。需求 使用火狐瀏覽器實現檔案下載“”“# 1。匯入seleniumfrom selenium import webdriverfrom time import sleep# 2。建立Firefox瀏覽器配置資訊物件,用於存放自定義配置profile = webdriver。FirefoxProfile()# 3。 配置profile下載相關資訊”“”3。1 指定自定義下載路徑,預設只會自動建立一級目錄, 如果指定了多級不存在的目錄,將會下載到預設路徑, 如下就是定義了多級不存在的目錄,檔案就下載到了火狐瀏覽器的預設下載目錄中 我的火狐預設下載路徑:C:\\Users\\L\\Downloads“”“profile。set_preference(‘browser。download。dir’, ‘f:\\Download\\123\\456’)”“”3。2 將browser。download。folderList設定為: 設定成 0 表示下載到桌面 設定成 1 表示下載到瀏覽器預設下載路徑 設定成 2 表示使用自定義下載路徑 和上面browser。download。dir配合使用,如果設定成0和1 上面的配置基本無用。“”“profile。set_preference(‘browser。download。folderList’, 2)”“”3。3 browser。helperApps。alwaysAsk。force: 對於未知的 MIME 型別檔案會彈出視窗讓使用者處理, 預設值為true,設定為False, 表示不會記錄開啟未知 MIME 型別檔案的方式“”“profile。set_preference(”browser。helperApps。alwaysAsk。force“, False)”“”3。4 在開始下載時是否顯示下載管理器 設定為true,則在使用者啟動下載的時候顯示Firefox瀏覽器的檔案下載視窗 否則不顯示檔案下載視窗。“”“profile。set_preference(‘browser。download。manager。showWhenStarting’, False)”“”3。5 設定為 False 會把下載框進行隱藏“”“profile。set_preference(”browser。download。manager。useWindow“, False)”“”3。6 預設值為 true,設定為 False 表示不獲取焦點“”“profile。set_preference(”browser。download。manager。 focusWhenStarting“, False)”“”3。7 下載。exe檔案彈出警告, 預設值是 true,設定為False 則不會彈出警告框“”“profile。set_preference(”browser。download。manager。alertOnEXEOpen“, False)”“”3。8 browser。helperApps。neverAsk。openFile: 表示直接開啟下載檔案,不顯示確認框 預設值為空字串,下行程式碼行設定了多種檔案的 MIME型別。 例如: application/exe,表示。exe型別的檔案, application/excel表示 Excel 型別的檔案“”“profile。set_preference(”browser。helperApps。neverAsk。openFile“, ”application/zip“)”“”3。9 對所給出檔案型別不再彈出框進行詢問,直接儲存到本地磁碟“”“profile。set_preference(‘browser。helperApps。neverAsk。saveToDisk’, ‘application/zip, application/octet-stream’)”“”其他可選檔案型別: application/a-gzip application/x-gzip, application/zip, application/x-gtar, text/plain, application/x-compressed, application/octet-stream, application/pdf“”“”“”3。10 browser。download。manager。showAlertOnComplete: 設定下載檔案結束後是否顯示下載完成提示框, 預設為true,設定為False, 表示下載完成後不顯示下載完成提示框“”“profile。set_preference(”browser。download。manager。 showAlertOnComplete“, False)”“”3。11 browser。download。manager。closeWhenDone: 設定下載結束後是否自動關閉下載框, 預設值為true,設定為False, 表示不關閉下載管理器。“”“profile。set_preference(”browser。download。manager。closeWhenDone“, False)# 4。 建立瀏覽器物件# 啟動瀏覽器時,透過firefox_profile引數# 將自動以配置新增到FirefoxProfile物件中driver = webdriver。Firefox(firefox_profile=profile)# 5。 訪問Firefox瀏覽器驅動檔案下載網址driver。get(”https://npm。taobao。org/mirrors/geckodriver/v0。20。0/“)sleep(3)# 6。 定位下載連結,並點選下載file = driver。find_element_by_link_text(”geckodriver-v0。20。0-win64。zip“)file。click()sleep(3)# 7。關閉瀏覽器driver。quit()

2、Chrome瀏覽器檔案下載

示例:

Chrome瀏覽器,設定其options:

download。default_directory

:設定下載路徑。

profile。default_content_settings。popups

:設定為0禁止彈出視窗

”“”1。學習目標 瞭解使用谷歌瀏覽器實現檔案下載2。操作步驟( 2。1 建立谷歌瀏覽器載入項物件 webdriver。ChromeOptions() 2。2 定義Chrome瀏覽器載入項引數 2。3 將載入項引數新增到谷歌瀏覽器載入項物件中 options。add_experimental_option(‘prefs’, prefs) 2。4 建立Chrome瀏覽器物件,並把自定義載入項物件儲存到瀏覽器物件中 2。5 訪問下載網站 2。6 進行下載3。需求 使用谷歌瀏覽器實現檔案下載“”“# 1。匯入seleniumfrom selenium import webdriverfrom time import sleep# 2。 建立谷歌瀏覽器載入項物件options = webdriver。ChromeOptions()# 3。 定義載入項引數prefs = {‘profile。default_content_settings。popups’: 0, ‘download。default_directory’: ‘f:\\’}# 4。將載入項引數新增到谷歌瀏覽器載入項物件中options。add_experimental_option(‘prefs’, prefs)# 5。 建立瀏覽器物件,並新增載入項物件driver = webdriver。Chrome(options=options)# 6。 方位下載頁面driver。get(‘https://npm。taobao。org/mirrors/chromedriver/80。0。3987。106/’)# 7。 點選下載driver。find_element_by_link_text(”chromedriver_win32。zip“)。click()sleep(3)# 8。關閉瀏覽器driver。quit()