日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows从web下载文件的几种方式

發(fā)布時間:2025/7/14 windows 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows从web下载文件的几种方式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近搞app自動化測試,需要自動從網(wǎng)頁上下載apk用于測試,順便學習了幾種從web下載文件的方式。

一、PowerShell?DownloadFile 命令

PowerShell 是一種winodws原生的腳本語言,使用很方便,可以實現(xiàn)很多復雜的功能。

首先啟動PowerShell,可以在cmd里執(zhí)行 start powershell,也可以按住shift建右擊選擇打開powershell

啟動powershell后輸入如下命令:

$client = new-object System.Net.WebClient $client.DownloadFile('url', 'file')

 這里的url是下載文件的地址,file是文件保存路徑(包括文件名)。如果出現(xiàn)報錯如下:使用“2”個參數(shù)調用“DownloadFile”時發(fā)生異常:“在 WebClient 請求期間發(fā)生異常。”

就是文件保存路徑?jīng)]有寫完整,一定要包括文件名。如:D:\app-release.apk

在Jenkins build step 中執(zhí)行 PowerShell 命令

當然這是手動在powershell命令行執(zhí)行的,并沒有實現(xiàn)自動化。我們需要把它放到Jenkins中去實現(xiàn)。

在Jenkins中執(zhí)行powershell命令需要先安裝相應插件如下:

安裝完重啟,就可以在任務構建中添加執(zhí)行powershell命令的操作:

填入上面的兩條命令,就可以執(zhí)行文件下載操作了。

多個build step

如果有多個step呢?如果想要在下載文件失敗后進行其他操作呢?

上面的操作,無論怎么執(zhí)行 PowerShell 命令,build step 的結束狀態(tài)都是 "成功"(包括一些命令執(zhí)行失敗的情況)。這是因為PowerShell 執(zhí)行的過程中沒有執(zhí)行 exit 調用,Jenkins 無法判斷執(zhí)行的命令是否成功退出,所以就默認是成功的了。實際上,當命令執(zhí)行失敗或是滿足一些條件時,我們希望 build step 的結束狀態(tài)是 "失敗",后續(xù)的 build step 根據(jù)前面 step 的結束狀態(tài)決定是否執(zhí)行。

這就需要在PowerShell 命令執(zhí)行后執(zhí)行 exit 調用:判斷腳本執(zhí)行成功時調用 exit 0;判斷腳本執(zhí)行失敗時調用 exit 1

也就是執(zhí)行三條命令,例如:

$client = new-object System.Net.WebClient $client.DownloadFile('url', 'file') exit 1

二、python實現(xiàn)文件下載

利用python+selenium也可以實現(xiàn)從web上下載文件,首先要確保對應調用的瀏覽器安裝好driver,參考:https://www.cnblogs.com/Dahlia/p/10655573.html

chrome下載

對于Chrome瀏覽器,設置其options:

  • download.default_directory:設置下載路徑
  • profile.default_content_settings.popups:設置為 0 禁止彈出窗口

代碼示例:

# -*- coding: utf-8 -*-from selenium import webdriver from time import sleepoptions = 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()

  

firefox下載

同樣,對于Firefox,需要我們設置其Profile:

  • browser.download.dir:指定下載路徑
  • browser.download.folderList:設置成2,表示使用自定義下載路徑;設置成0,表示下載到桌面;設置成1,表示下載到默認路徑
  • browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器
  • browser.helperApps.neverAsk.saveToDisk:對所給出文件類型不再彈出框進行詢問

代碼示例:

# -*- coding: utf-8 -*-from selenium import webdriver from time import sleepprofile = 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下載有個要注意的地方:

browser.helperApps.neverAsk.saveToDisk這個參數(shù)是對所給出文件類型不再彈出框進行詢問,需要明確一下對應文件的MIME類型,參考:http://www.w3school.com.cn/media/media_mimeref.asp

在實踐的時候下載的是apk文件,發(fā)現(xiàn)這里沒列出apk的MIME類型。查閱其他資料發(fā)現(xiàn),apk對應:application/vnd.android.package-archive。

以上兩個方法稍微優(yōu)化一下:

# -*- coding: utf-8 -*-from selenium import webdriver from time import sleep import osclass WebDownload:chromedriver_path = 'E:\\chromedriver\\chromedriver.exe'down_dir = 'E:\\RED\\workspace\\appAuto\\apk\\Android10'file_name = 'app.apk'url = 'https://www.xxx'def chrome_download(self):list = os.listdir(self.down_dir) #列出目錄的下所有文件和文件夾if self.file_name in list:os.remove(os.path.join(self.down_dir,self.file_name))# download.default_directory:設置下載路徑# profile.default_content_settings.popups:設置為 0 禁止彈出窗口options = webdriver.ChromeOptions()prefs = {'profile.default_content_settings.popups': 0,'download.default_directory': self.down_dir}options.add_experimental_option('prefs', prefs)driver = webdriver.Chrome(executable_path=self.chromedriver_path, chrome_options=options)driver.get(url=self.url)driver.find_element_by_id('down_load').click()sleep(20)driver.quit()def firefox_download(self):list = os.listdir(self.down_dir) # 列出目錄的下所有文件和文件夾if self.file_name in list:os.remove(os.path.join(self.down_dir, self.file_name))# browser.download.dir:指定下載路徑# browser.download.folderList:設置成2,表示使用自定義下載路徑;設置成0,表示下載到桌面;設置成1,表示下載到默認路徑# browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器# browser.helperApps.neverAsk.saveToDisk:對所給出文件類型不再彈出框進行詢問。apk:application/vnd.android.package-archiveprofile = webdriver.FirefoxProfile()profile.set_preference('browser.download.dir', self.down_dir)profile.set_preference('browser.download.folderList', 2)profile.set_preference('browser.download.manager.showWhenStarting', False)profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/vnd.android.package-archive')driver = webdriver.Firefox(firefox_profile=profile)driver.get(self.url)driver.find_element_by_id('down_load').click()sleep(20)driver.quit()if __name__ == '__main__':# WebDownload().chrome_download()WebDownload().firefox_download()

  

  

轉載于:https://www.cnblogs.com/Dahlia/p/10670455.html

總結

以上是生活随笔為你收集整理的Windows从web下载文件的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。