Java+Selenium实现文件上传下载功能详解

 更新时间:2023年01月09日 09:07:22   作者:洛阳泰山  
这篇文章主要介绍了java代码如何利用selenium操作浏览器上传和下载文件功能,文中的示例代码讲解详细,具有一定的借鉴价值,需要的可以参考一下

简介

本文主要讲解java代码如何利用selenium操作浏览器上传和下载文件代码教程。

上传文件

常见的 web 页面的上传,一般使用 input 标签或是插件(JavaScript、Ajax),对于 input 标签的上传,可以直接使用 sendKeys(路径) 来进行上传。

先写一个测试用的页面。

代码如下:

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
 
<body>
    <input type="file" name="">
</body>
</html>

下面通过 xpath 定位 input 标签,然后使用 sendKeys(filePath) 上传文件。

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
 
import java.awt.*;
import java.io.IOException;
 
public class SeleniumDemo {
    private final static String webDriver = "webdriver.chrome.driver";
    private final static String webDriverPath ="E:\\chromedriver\\chromedriver.exe";
 
 
    public static void main(String[] args) throws InterruptedException, IOException, AWTException {
        System.setProperty(webDriver, webDriverPath);
        WebDriver driver= new ChromeDriver();
        driver.get("file:///C:/Users/liuya/Desktop/test.html");
        Thread.sleep(2000);
        String filePath="C:\\Users\\liuya\\Desktop\\doc\\tarzan.txt";
        driver.findElement(By.xpath("//*[@name='upload']")).sendKeys(filePath);
 
    }
 
 
}

下载文件

Chrome浏览器

Firefox 浏览器要想实现文件下载,需要通过 add_experimental_option 添加 prefs 参数。

download.default_directory:设置下载路径。

profile.default_content_settings.popups:0 禁止弹出窗口。

import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
 
import java.awt.*;
import java.io.IOException;
 
public class SeleniumDemo {
    private final static String webDriver = "webdriver.chrome.driver";
    private final static String webDriverPath ="E:\\chromedriver\\chromedriver.exe";
 
 
    public static void main(String[] args) throws InterruptedException, IOException, AWTException {
        System.setProperty(webDriver, webDriverPath);
        WebDriver driver= new ChromeDriver();
        driver.get("http://pic.sogou.com/d?query=%E5%B0%8F%E7%8B%97&forbidqc=&entityid=&preQuery=&rawQuery=&queryList=&st=&did=45");
        Thread.sleep(2000);
        driver.findElement(By.className("download")).click();
    }
 
 
}

当你弹出像下面的页面 “您的连接不是私密连接” 时,可以直接键盘输入 “thisisunsafe” 直接访问链接。那么这个键盘输入字符串的操作就是之间讲到的 sendKeys,但由于该标签页是新打开的,所以要通过 switchTo().window() 将窗口切换到最新的标签页。

 //操作最新窗口
        driver.switchTo().window(driver.getWindowHandles().stream().reduce((first, second) -> second).orElse(null));
        driver.findElement(By.xpath("./html")).sendKeys("thisisunsafe");

到此这篇关于Java+Selenium实现文件上传下载功能详解的文章就介绍到这了,更多相关Java Selenium文件上传下载内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈Java中的class类

    浅谈Java中的class类

    这篇文章主要介绍了浅谈Java中的class类,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Springcloud整合stream,rabbitmq实现消息驱动功能

    Springcloud整合stream,rabbitmq实现消息驱动功能

    官方定义SpringCloud Stream 是一个构建消息驱动微服务的框架。我们只需要搞清楚如何与Spring Cloud Stream 交互就可以方便使用消息驱动的方式。本文将通过Springcloud整合stream,rabbitmq实现消息驱动功能,需要的可以参考一下
    2022-02-02
  • java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    java使用FFmpeg合成视频和音频并获取视频中的音频等操作(实例代码详解)

    这篇文章主要介绍了java使用FFmpeg合成视频和音频并获取视频中的音频等操作,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • java POI解析Excel 之数据转换公用方法(推荐)

    java POI解析Excel 之数据转换公用方法(推荐)

    下面小编就为大家带来一篇java POI解析Excel 之数据转换公用方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • springboot使用注解实现鉴权功能

    springboot使用注解实现鉴权功能

    这篇文章主要介绍了springboot使用注解实现鉴权功能,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-12-12
  • jstl标签基础开发步骤(详解)

    jstl标签基础开发步骤(详解)

    下面小编就为大家带来一篇jstl标签基础开发步骤(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Java实现简单棋盘存档和读取功能

    Java实现简单棋盘存档和读取功能

    这篇文章主要为大家详细介绍了Java实现简单棋盘存档和读取功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法

    java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list

    这篇文章主要介绍了java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list错误解决办法的相关资料,需要的朋友可以参考下
    2016-12-12
  • springboot验证码的生成与验证的两种方法

    springboot验证码的生成与验证的两种方法

    本文主要介绍了springboot验证码的生成与验证的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • 基于JDBC访问MySql公共方法实例解析

    基于JDBC访问MySql公共方法实例解析

    这篇文章主要介绍了基于JDBC访问MySql公共方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10

最新评论