最近搞app自动化测试,需要自动从网页上下载apk用于测试,顺便学习了几种从web下载文件的方式。
一、PowerShell DownloadFile 命令
PowerShell 是一种winodws原生的脚本语言,使用很方便,可以实现很多复杂的功能。
首先启动PowerShell,可以在cmd里执行 start powershell,也可以按住shift建右击选择打开powershell
启动powershell后输入如下命令:
$client = new-object System.Net.WebClient $client.DownloadFile(‘url‘, ‘file‘)
这里的url是下载文件的地址,file是文件保存路径(包括文件名)。如果出现报错如下:使用“2”个参数调用“DownloadFile”时发生异常:“在 WebClient 请求期间发生异常。”
就是文件保存路径没有写完整,一定要包括文件名。如:D:\app-release.apk
在Jenkins build step 中执行 PowerShell 命令
当然这是手动在powershell命令行执行的,并没有实现自动化。我们需要把它放到Jenkins中去实现。
在Jenkins中执行powershell命令需要先安装相应插件如下:
安装完重启,就可以在任务构建中添加执行powershell命令的操作:
填入上面的两条命令,就可以执行文件下载操作了。
多个build step
如果有多个step呢?如果想要在下载文件失败后进行其他操作呢?
上面的操作,无论怎么执行 PowerShell 命令,build step 的结束状态都是 "成功"(包括一些命令执行失败的情况)。这是因为PowerShell 执行的过程中没有执行 exit 调用,Jenkins 无法判断执行的命令是否成功退出,所以就默认是成功的了。实际上,当命令执行失败或是满足一些条件时,我们希望 build step 的结束状态是 "失败",后续的 build step 根据前面 step 的结束状态决定是否执行。
这就需要在PowerShell 命令执行后执行 exit 调用:判断脚本执行成功时调用 exit 0;判断脚本执行失败时调用 exit 1
也就是执行三条命令,例如:
$client = new-object System.Net.WebClient $client.DownloadFile(‘url‘, ‘file‘) exit 1
二、python实现文件下载
未完待续
原文地址:https://www.cnblogs.com/Dahlia/p/10670455.html