Java+Selenium3方法篇37-Robot类处理文件上传

       本篇介绍纯Java的方式去处理,web上本地上传图片的功能。这个过程,我们还是需要用到Robot这个类,之前我们用这个类实现了截图的功能。由于在web上点击了本地上传图片后,弹出的框很特殊,selenium无法识别这个弹窗,所以在selnium中没有直接的方法去实现上传本地文件。我们利用Robot的大致流程是这样的:

1. 用selnium点击web上本地上传文件的按钮

2.在弹窗,文件路径输入框默认是光标聚焦,我们把文件在磁盘上的路径,通过拷贝和黏贴方法写上去。

3.通过按下回车站,默认触发弹窗的确定按钮,完成了文件上传过程。

场景举例:

       打开百度首页,搜索按钮左侧有一个照相机的图标,点击可以选择图片搜索,我们通过本地上传图片的过程来模拟文件自动化上传操作。准备条件,你在百度图片搜索一个图片,保存到你桌面,例如我找到一个关于selenium的图片,然后保存在桌面,名称为selenium.png。

相关脚本代码如下:

package lessons;

import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;

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

public class FileUpload {
public static void main(String[] args) throws Exception {
		
	System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");
		
	WebDriver driver = new ChromeDriver();
	driver.manage().window().maximize();
		
	driver.get("https://www.baidu.com");
		
	// 指定图片的路径,这里我放桌面上
	StringSelection sel = new StringSelection("C:\\Users\\Anthony\\Desktop\\selenium.jpg");
		 
	// 把图片文件路径复制到剪贴板
	Toolkit.getDefaultToolkit().getSystemClipboard().setContents(sel,null);
	System.out.println("selection" +sel);
		 
	// 点击照相机这个按钮
	driver.findElement(By.xpath("//*/span[@class='soutu-btn']")).click();
	    
	 // 点击本地上传图片
	 driver.findElement(By.xpath("//*/input[@class='upload-pic']")).click();
		
	 // 新建一个Robot类的对象
	 Robot robot = new Robot();
	 Thread.sleep(1000);
	         
	 // 按下回车
	 robot.keyPress(KeyEvent.VK_ENTER);
	    
	 // 释放回车
	 robot.keyRelease(KeyEvent.VK_ENTER);
	    
	 // 按下 CTRL+V
	 robot.keyPress(KeyEvent.VK_CONTROL);
	 robot.keyPress(KeyEvent.VK_V);
	    
	 // 释放 CTRL+V
	 robot.keyRelease(KeyEvent.VK_CONTROL);
	 robot.keyRelease(KeyEvent.VK_V);
	 Thread.sleep(1000);
	           
	 // 点击回车 Enter 
	 robot.keyPress(KeyEvent.VK_ENTER);
	 robot.keyRelease(KeyEvent.VK_ENTER);
	    
	}

}
      上面看到,Robot中键盘输入行为分为了两个过程:第一个过程是按下键盘上键不动,第二个过程是释放或者松开这个键。所以上面代码看来来有点多,有点啰嗦的感觉。由于图片是百度搜索上下载的,所以,运行肯定有相关匹配的结果。


  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值