问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

upload_file

创作时间:
作者:
@小白创作中心

upload_file

引用
CSDN
1.
https://blog.csdn.net/mo_sss/article/details/138634919

本文将详细介绍如何使用Selenium在Java中实现文件上传的自动化测试。

1. 上传文件的HTML网页

首先,我们需要创建一个包含文件上传功能的HTML页面:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="content-type" content="text/html;charset=utf-8" />
  <title>upload_file</title>
  <!--bootstrap 核心 CSS 文件-->
  <link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" >
</head>
<body>
<div class="row-fluid">
  <div class="span6 well">
    <h3>文件上传</h3>
    <p></p>
    <br>
    <br>
    <input type="file" name="file" id="fu" />
<!--    <button id="btn" type="button" name="BTN">提交按钮</button>-->
  </div>
</div>
</body>
<!--<script src="http://cdn.bootcss.com/jquery/1.11.1/jquery.min.js"></script>-->

<!--bootstrap 核心 javascript 文件-->
<script src="http://cdn.bootcss.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</html>

2. 访问HTML页面

使用Selenium打开上述HTML页面:

// 这里有一个上传文件的html文件,访问该文件可以测试上传文件的按钮
webDriver.get("E:\\PROJECTS\\MYSELF\\libai-multifunctional-platform\\src\\main\\java\\com\\libai\\test\\selenium\\chrome\\html\\upfile.html");

3. 准备上传的文件

本地准备一个文件,并将其完整路径定义为变量:

// 需要上传的文件的本地路径
String filePath = "F:\\CSDN\\CsdnFileBg\\selenium20240509.png";

4. 定位上传控件

使用Selenium定位到HTML中上传文件的输入位置:

// 定位到html中上传文件的输入位置
WebElement kw = webDriver.findElement(By.id("fu"));

5. 上传文件

通过sendKeys方法上传文件:

// 通过sendKeys传入文件全路径,执行程序后可以看到文件被选中后显示在文件上传按钮后面
kw.sendKeys(filePath);

6. 完整代码

下面是完整的Java代码示例:

package com.libai.test.selenium.chrome;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

import java.io.File;

/**
 * @ClassDescription: 文件上传模拟
 * @JdkVersion: 1.8
 * @Author: 李白
 * @Created: 2024/5/9 9:34
 */
public class FileUploadTest {
    public static void main(String[] args) throws InterruptedException {
        // 指定驱动,第一个参数为驱动名称,不同浏览器的参数名称不一样,请根据浏览器查询到对应的浏览器参数名,第二个参数为驱动文件路径,即驱动完整文件路径
        System.setProperty("webdriver.chrome.driver", "D:\\JavaSoftWares\\Google\\driver\\chromedriver-win64\\chromedriver.exe");
        // 谷歌驱动
        ChromeOptions cops = new ChromeOptions();
        // 允许所有请求
        cops.addArguments("--remote-allow-origins=*");
        // 默认设置开始打开网页时窗口最大化
        cops.addArguments("--start-maximized");
        // 创建驱动对象
        WebDriver webDriver = new ChromeDriver(cops);
        // 启动需要打开的网页
//        webDriver.get("https://www.baidu.com");
        // 这里有一个上传文件的html文件,访问该文件可以测试上传文件的按钮
        webDriver.get("E:\\PROJECTS\\MYSELF\\libai-multifunctional-platform\\src\\main\\java\\com\\libai\\test\\selenium\\chrome\\html\\upfile.html");
//        webDriver.get("./chrome/html/upfile.html");
        // 指定窗口大小--最大化
//        webDriver.manage().window().maximize();

        // 上传文件主要通过sendKeys
        // 需要上传的文件的本地路径
        String filePath = "F:\\CSDN\\CsdnFileBg\\selenium20240509.png";
        // 定位到html中上传文件的输入位置
        WebElement kw = webDriver.findElement(By.id("fu"));
        Thread.sleep(3000);
        // 通过sendKeys传入文件全路径,执行程序后可以看到文件被选中后显示在文件上传按钮后面
        kw.sendKeys(filePath);
        Thread.sleep(3000);
        // 提交按钮
//        webDriver.findElement(By.id("btn")).click();
        Thread.sleep(3000);

        // 关闭资源(关闭浏览器)
        webDriver.close();

    }
}

7. 浏览器自动操作的截图

以下是浏览器自动操作的截图:

  1. 首先会将HTML页面用浏览器打开

  1. 然后会将本地文件上传到页面

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号