Java+Selenium3方法篇37-Robot类处理文件上传
来源:互联网 发布:淘宝实体店加盟条件 编辑:程序博客网 时间:2024/05/16 04:03
本篇介绍纯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中键盘输入行为分为了两个过程:第一个过程是按下键盘上键不动,第二个过程是释放或者松开这个键。所以上面代码看来来有点多,有点啰嗦的感觉。由于图片是百度搜索上下载的,所以,运行肯定有相关匹配的结果。
阅读全文
0 0
- Java+Selenium3方法篇37-Robot类处理文件上传
- Java+Selenium3方法篇38-AutoIt工具处理文件上传
- Java+Selenium3方法篇31-利用Robot类截图
- Java+Selenium3方法篇26-处理Alert弹窗
- Java+Selenium3方法篇32-处理不安全连接
- Java+Selenium3方法篇34-如何处理日历控件
- Java+Selenium3方法篇42-利用POI读写excel文件
- Java+Selenium3方法篇44-利用opencsv读取csv文件
- Java+Selenium3方法篇25-isDisplayed方法
- Java+Selenium3方法篇13-findElements举例
- Java+Selenium3方法篇39-Explicit wait
- Java+Selenium3方法篇41-FluentWait
- Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换
- Java+Selenium3方法篇22-利用Javascript处理竖向滚动条
- Java+Selenium3方法篇27-利用JS处理元素高亮显示
- Java+Selenium3方法篇21-webdriver处理浏览器多窗口切换
- Java+Selenium3方法篇45-Java中如何读取properties文件内容
- Java+Selenium3方法篇2-Timeout接口相关方法介绍
- TCP 的超时与重传
- TreeSet保证元素唯一性
- dedecms模板教程:dedecms模板如何使用?
- android中常用adb命令
- Java 中文件的加密与解密
- Java+Selenium3方法篇37-Robot类处理文件上传
- Redis集群教程
- js 生成随机颜色
- Dedecms模板下载:装饰装修设计公司网站织梦模板
- Android KEYCODE键值对应大全
- 工厂方法模式 VS 简单工厂模式
- 接口与回调(相关话题:特定事件发生应该采取动作、监听)
- 关于glReadPixels的两点心得
- bzoj4199 [Noi2015]品酒大会 后缀数组+并查集