Java+Selenium實(shí)現(xiàn)文件上傳下載功能詳解
簡(jiǎn)介
本文主要講解java代碼如何利用selenium操作瀏覽器上傳和下載文件代碼教程。
上傳文件
常見的 web 頁(yè)面的上傳,一般使用 input 標(biāo)簽或是插件(JavaScript、Ajax),對(duì)于 input 標(biāo)簽的上傳,可以直接使用 sendKeys(路徑) 來(lái)進(jìn)行上傳。
先寫一個(gè)測(cè)試用的頁(yè)面。

代碼如下:
<!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>下面通過(guò) xpath 定位 input 標(biāo)簽,然后使用 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("http://*[@name='upload']")).sendKeys(filePath);
}
}
下載文件
Chrome瀏覽器
Firefox 瀏覽器要想實(shí)現(xiàn)文件下載,需要通過(guò) add_experimental_option 添加 prefs 參數(shù)。
download.default_directory:設(shè)置下載路徑。
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();
}
}當(dāng)你彈出像下面的頁(yè)面 “您的連接不是私密連接” 時(shí),可以直接鍵盤輸入 “thisisunsafe” 直接訪問(wèn)鏈接。那么這個(gè)鍵盤輸入字符串的操作就是之間講到的 sendKeys,但由于該標(biāo)簽頁(yè)是新打開的,所以要通過(guò) switchTo().window() 將窗口切換到最新的標(biāo)簽頁(yè)。
//操作最新窗口
driver.switchTo().window(driver.getWindowHandles().stream().reduce((first, second) -> second).orElse(null));
driver.findElement(By.xpath("./html")).sendKeys("thisisunsafe");
到此這篇關(guān)于Java+Selenium實(shí)現(xiàn)文件上傳下載功能詳解的文章就介紹到這了,更多相關(guān)Java Selenium文件上傳下載內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Springcloud整合stream,rabbitmq實(shí)現(xiàn)消息驅(qū)動(dòng)功能
官方定義SpringCloud?Stream?是一個(gè)構(gòu)建消息驅(qū)動(dòng)微服務(wù)的框架。我們只需要搞清楚如何與Spring?Cloud?Stream?交互就可以方便使用消息驅(qū)動(dòng)的方式。本文將通過(guò)Springcloud整合stream,rabbitmq實(shí)現(xiàn)消息驅(qū)動(dòng)功能,需要的可以參考一下2022-02-02
java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作(實(shí)例代碼詳解)
這篇文章主要介紹了java使用FFmpeg合成視頻和音頻并獲取視頻中的音頻等操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-02-02
java POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)
下面小編就為大家?guī)?lái)一篇java POI解析Excel 之?dāng)?shù)據(jù)轉(zhuǎn)換公用方法(推薦)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-08-08
springboot使用注解實(shí)現(xiàn)鑒權(quán)功能
這篇文章主要介紹了springboot使用注解實(shí)現(xiàn)鑒權(quán)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2024-12-12
jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)
下面小編就為大家?guī)?lái)一篇jstl標(biāo)簽基礎(chǔ)開發(fā)步驟(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05
Java實(shí)現(xiàn)簡(jiǎn)單棋盤存檔和讀取功能
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單棋盤存檔和讀取功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list
這篇文章主要介紹了java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list錯(cuò)誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12
springboot驗(yàn)證碼的生成與驗(yàn)證的兩種方法
本文主要介紹了springboot驗(yàn)證碼的生成與驗(yàn)證的兩種方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
基于JDBC訪問(wèn)MySql公共方法實(shí)例解析
這篇文章主要介紹了基于JDBC訪問(wèn)MySql公共方法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10

