Selenium+Python瀏覽器下載彈窗的處理
阿新 • • 發佈:2019-02-02
from selenium importwebdriver from time importsleep profile = webdriver.FirefoxProfile() profile.set_preference('browser.download.dir','d:\\') profile.set_preference('browser.download.folderList',2) profile.set_preference('browser.download.manager.showWhenStarting',False) profile.set_preference('browser.helperApps.neverAsk.saveToDisk','application/zip') driver =webdriver.Firefox(firefox_profile=profile) driver.get('http://sahitest.com/demo/saveAs.htm') driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click() sleep(3) driver.quit()
Firefox需要針對每種檔案型別進行設定
Chrome 檔案下載
Chrome瀏覽器類似,設定其options:
- download.default_directory:設定下載路徑
- profile.default_content_settings.popups:設定為 0 禁止彈出視窗
---例項----
# -*- coding: utf-8 -*- from selenium import webdriver from time import sleep options = webdriver.ChromeOptions() prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'd:\\'} options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome(executable_path='D:\\chromedriver.exe', chrome_options=options) driver.get('http://sahitest.com/demo/saveAs.htm') driver.find_element_by_xpath('//a[text()="testsaveas.zip"]').click() sleep(3) driver.quit()
但是,發現在selenium+firefox的配置下並不能生效!於是就在網上繼續找,找到了下面這種方法
【新建火狐瀏覽器的profile,設定測試場景的配置,預設自動儲存,直接跳過下載視窗】
步驟:
1、火狐下建立一個新的profile,建立過程參考建立獨立的Firefox
profile
2、啟動新建的profile瀏覽器,讓瀏覽器學習下載的操作(把下載操作的步驟操作一遍,讓瀏覽器的應用程式中出現該型別操作的選擇項)
3、設定指令碼,指令碼設定如下:
這樣就會自動載入新的profile來執行指令碼.此類方法在火狐上面驗證OK。可以很完美的解決下載彈窗的問題,其他瀏覽器可以先嚐試前一種方法。fp=webdriver.FirefoxProfile("新建profile的訪問路徑") #注意是profile路徑,不是bat檔案的路徑,一般位於火狐瀏覽器的資料目錄下 browser = webdriver.Firefox(fp) #啟動瀏覽器,載入profile</strong></span></span>
宣告:本文的各種解決方案為參考其他網友的文章,本人只是做了整理和記錄。