《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)

简介: 【5月更文挑战第20天】本文介绍了自动化测试中如何实现无弹窗下载文件,主要针对Firefox浏览器。作者指出,通常的下载操作包括点击下载按钮,但这里讨论的是避免下载弹窗直接保存文件的方法。文章详细讲解了通过设置Firefox参数(如`browser.download.dir`、`browser.helperApps.neverAsk.saveToDisk`等)来实现这一功能,并给出了Java Selenium的示例代码,展示了如何创建FirefoxProfile并进行相关设置,以及如何启动浏览器和执行下载操作。

1.简介

前边几篇文章讲解完如何上传文件,既然有上传,那么就可能会有下载文件。因此宏哥就接着讲解和分享一下:自动化测试下载文件。可能有的小伙伴或者童鞋们会觉得这不是很简单吗,还用你介绍和讲解啊,不说就是访问到下载页面,然后定位到要下载的文件的下载按钮后,点击按钮就可以了。其实不是这样的,且听宏哥徐徐道来:宏哥这里的下载是去掉下载弹框的下载。

2.去掉下载弹窗的优点

(1)检索键盘鼠标自动化控制模块的导入

(2)可以无头化运行,不影响同时进行的其他的任务

3.Firefox自动化下载文件

3.1参数说明

为了不弹出下载框需要对Firefox的一些参数进行设置:

browser.download.dir:指定下载路径

browser.download.folderList:设置成 2 表示使用自定义下载路径;设置成 0 表示下载到桌面;设置成 1 表示下载到默认路径

browser.download.manager.showWhenStarting:在开始下载时是否显示下载管理器

browser.helperApps.neverAsk.saveToDisk:对所给出文件类型不再弹出框进行询问

3.2代码设计

3.3参考代码

package lessons;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.WebElement;

import org.openqa.selenium.firefox.FirefoxDriver;

import org.openqa.selenium.firefox.FirefoxOptions;

import org.openqa.selenium.firefox.FirefoxProfile;

import org.openqa.selenium.By;


/**

* @author 北京-宏哥

*

* @公众号:北京宏哥

*

* @《手把手教你》系列技巧篇(五十六)-java+ selenium自动化测试-下载文件-上篇(详细教程)

*

* @2021年12月17日

*/

public class FirefoxDownload {

   

   public static void main(String[] args)throws InterruptedException {

       System.setProperty("webdriver.gecko.driver", ".\\Tools\\geckodriver.exe");  

       FirefoxProfile profile = new FirefoxProfile();

       profile.setPreference("browser.download.folderList", 2);

       profile.setPreference("browser.download.dir", "D:\\test2");

       profile.setPreference("browser.download.manager.showWhenStarting", false);

       profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/octet-stream");

       FirefoxOptions firefoxOptions = new FirefoxOptions();

       firefoxOptions.setProfile(profile);

       

       // 打开一个带上门设置好profile的火狐浏览器

       WebDriver driver = new FirefoxDriver(firefoxOptions);

       //WebDriver driver =new FirefoxDriver(profile);

       driver.manage().window().maximize();

       driver.get("https://pypi.org/project/selenium/#files");//到目标网页      

       Thread.sleep(10000);

       WebElement myElement = driver.findElement(By.xpath("//a[contains(text(),'selenium-4.1.0-py3-none-any.whl')]"));

       myElement.click();//点击下载

       Thread.sleep(10000);

       System.out.println("browser will be close");

       driver.quit();    

   }


}

3.4运行代码

1.运行代码,右键Run AS->Java Appliance,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

4.小结

Firefox需要针对每种文件类型进行设置,对于不知道文件类型的可以用抓包软件进行抓包,F12找到导致弹框的请求,查看该请求response的header,不出意外的话content-type应该就是你要的结果。具体查看文件类型的方法如下:



每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
2月前
|
Java 测试技术 数据安全/隐私保护
通过yaml文件配置自动化测试程序
通过yaml文件可以将自动化测试环境,测试数据和测试行为分开,请看一下案例
84 4
|
9月前
|
算法 数据安全/隐私保护 计算机视觉
基于FPGA的图像双线性插值算法verilog实现,包括tb测试文件和MATLAB辅助验证
本项目展示了256×256图像通过双线性插值放大至512×512的效果,无水印展示。使用Matlab 2022a和Vivado 2019.2开发,提供完整代码及详细中文注释、操作视频。核心程序实现图像缩放,并在Matlab中验证效果。双线性插值算法通过FPGA高效实现图像缩放,确保质量。
|
7月前
|
安全 关系型数据库 MySQL
MySQL8使用物理文件恢复MyISAM表测试
MySQL8使用物理文件恢复MyISAM表测试
124 0
|
8月前
|
人工智能 测试技术 API
Windows用户必备:Postman v11详细安装指南与API测试入门教程(附官网下载
Postman是全球领先的API开发与测试工具,支持REST、SOAP、GraphQL等协议调试。2025年最新版v11新增AI智能生成测试用例、多环境变量同步等功能,适用于前后端分离开发、自动化测试、接口文档自动生成及团队协作共享API资源。本文详细介绍Postman的软件定位、核心功能、安装步骤、首次配置、基础使用及常见问题解答,帮助用户快速上手并高效利用该工具进行API开发与测试。
|
11月前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
306 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
运维
【运维基础知识】用dos批处理批量替换文件中的某个字符串(本地单元测试通过,部分功能有待优化,欢迎指正)
该脚本用于将C盘test目录下所有以t开头的txt文件中的字符串“123”批量替换为“abc”。通过创建批处理文件并运行,可实现自动化文本替换,适合初学者学习批处理脚本的基础操作与逻辑控制。
798 56
|
12月前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
Web App开发 Java
使用java操作浏览器的工具selenium-java和webdriver下载地址
【10月更文挑战第12天】Selenium-java依赖包用于自动化Web测试,版本为3.141.59。ChromeDriver和EdgeDriver分别用于控制Chrome和Edge浏览器,需确保版本与浏览器匹配。示例代码展示了如何使用Selenium-java模拟登录CSDN,包括设置驱动路径、添加Cookies和获取页面源码。
842 6
|
XML 前端开发 数据格式
Ruby脚本:自动化网页图像下载的实践案例
Ruby脚本:自动化网页图像下载的实践案例
|
安全 Linux 网络安全
Kali渗透测试:自动播放文件攻击
Kali渗透测试:自动播放文件攻击
203 0