selenium+Java处理文件上传

selenium处理文件上传大致会有两种情况,一种是文件上传使用的是input元素,即<input type="file">,那么直接对这个input元素使用sendkeys方法输入文件的路径就可以完成上传,另一种是调用windows完成文件上传,即文件上传会弹出windows弹窗,此时则需要借助Autoit这样一个小工具结合selenium完成。
1、文件上传使用的是input元素,selenium+java代码示例参考如下:

public class UploadFile {

	public static void main(String[] args) throws Exception {
		System.setProperty("webdriver.chrome.driver", "D:\\webdrivers\\chromedriver.exe");
		WebDriver driver=new ChromeDriver();
		driver.manage().window().maximize();
		driver.get("https://www.baidu.com");
		driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
		driver.findElement(By.xpath("//span[@class='soutu-btn']")).click();
		
		//上传按钮为input标签,定位上传按钮
		WebElement input=driver.findElement(By.xpath("//input[@class='upload-pic']"));
		Thread.sleep(2000);
		//输入文件路径,上传文件
		input.sendKeys("D:\\AutoItScript\\timg.jpg");
		Thread.sleep(3000);

		//退出浏览器
		driver.quit();
	}
}

2、文件上传使用windows,需借助Autoit;具体操作步骤如下。
第一步,安装Autoit,下载后,默认安装即可;
第二步,Autoit脚本编写,Autioit脚本执行的内容主要从打开上传按钮后开始
(1)使用Autoit windows info组件识别windows窗口中的元素
在这里插入图片描述

按住Finder Tool按钮后拖动到指定位置识别元素,显示元素的各种属性
(2)使用SciTE Script Editor组件编写文件上传脚本
在这里插入图片描述
脚本解释如下:
ControlFocus("打开","","Edit1");表示将当前的焦点聚焦到打开的弹窗上
ControlSetText("打开","","Edit1","D:\AutoItScript\timg.jpg");表示选中需要上传的文件
ControlClick("打开","","Button1");表示点击弹窗中的打开按钮
(3)保存编写脚本,将编写的脚本转化为exe格式;选中编写的脚本,点击鼠标右键选择Compile Script点击确定。
在这里插入图片描述
第三步,selenium与Autoit脚本结合,实现文件上传。
(1)使用selenium点击文件上传按钮。
(2)使用Java中的Runtime类引入Autoit脚本。
例如编写完成的Autoit脚本存放在D盘AutoItScript目录下,则引入方式为:Runtime.getRuntime().exec(“D:\AutoItScript\upload.exe”)
(3)完成后续操作。
Autoit+selenium+java完成文件上传代码示例参考如下:

public class Autoit_upload {
	public static void main(String[] args) throws IOException, Exception {
		//使用Autoit实现文件上传//
        System.setProperty("webdriver.chrome.driver", "D:\\webdrivers\\chromedriver.exe");
        WebDriver driver=new ChromeDriver();
		driver.manage().window().maximize();
		driver.get("https://www.baidu.com");
		driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
		driver.findElement(By.xpath("//span[@class='soutu-btn']")).click();
		
		//点击上传按钮
		driver.findElement(By.xpath("//input[@class='upload-pic']"));
		Thread.sleep(2000);
	    //运行Autoit脚本,执行上传
	    Runtime.getRuntime().exec("D:\\AutoItScript\\uploadFile.exe");
	    Thread.sleep(2000);
	    
	    //退出浏览器
	    driver.quit();
	}
}
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
在Linux上使用Xvfb和Selenium结合Java来进行自动化测试是一种常见的方法。首先,你需要安装Xvfb和Selenium服务器。你可以通过克隆一个名为xvfb-selenium-server的存储库来安装Xvfb Selenium服务器。在Ubuntu 12.04服务器上,你可以使用以下命令进行克隆: $ cd /opt/ $ git clone https://github.com/Tomohiro/xvfb-selenium-server.git 然后,你需要安装一些依赖项。具体步骤可以参考相关资源。 接下来,你需要在Java项目中添加Selenium的Maven依赖。你可以在你的pom.xml文件中添加以下代码来添加Selenium的依赖: ```xml <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.141.59</version> </dependency> ``` 这样就可以在你的Java项目中使用Selenium了。 关于你提到的Google,我不清楚你具体指的是什么。如果你是想使用Selenium来操作Google搜索或其他Google相关的操作,你可以参考Selenium的官方文档或其他相关教程来学习如何使用Selenium进行这些操作。 总结起来,使用Xvfb、SeleniumJava和Google的组合可以实现在Linux上进行自动化测试。你需要安装Xvfb和Selenium服务器并配置Java项目的依赖。然后,你可以使用Selenium来进行各种操作,包括与Google相关的操作。希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [xvfb-selenium-server:Xvfb 上的 Headless Selenium 服务器项目](https://download.csdn.net/download/weixin_42115074/20000194)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [web自动化测试java+seleium)环境安装](https://blog.csdn.net/qq_43532386/article/details/127916749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦里有阳光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值