技术标签: ie下载框 自动化 Java selenium
当作自动化测试的时候,经常会碰到文件处理的情况。上传文件可以直接输入文件路径,但是下载文件情况有所不同,在chrome浏览器中文件可以自动下载,而IE浏览器中必须有一个下载框需要处理。selenium是浏览器驱动,只能操作浏览器内容,那怎么办呢?如果自动化使用的是java,那么可以使用Java robot模块来处理。
详细的介绍
https://www.cnblogs.com/java-of-hnj/p/5993017.html
http://java.sun.com/javase/6/docs/api/java/awt/Robot.html
简单来讲,Java robot 就是使电脑模拟鼠标、键盘操作。这样我们可以通过“快捷键”的方式来处理下载框。
//import java.awt.*;
Robot robot = new Robot();
robot.setAutoDelay(1000); //延迟1秒,防止操作过快界面跟不上
//当出现框之后,先 ctrl + s 保存
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_S);
robot.keyRelease(KeyEvent.VK_CONTROL);
//将文件下载路径放到剪贴板中
StringSelection path = new StringSelection("D:\\hello");
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(path,null);
//光标移到路径最前面
robot.keyPress(KeyEvent.VK_HOME);
robot.keyRelease(KeyEvent.VK_HOME);
//路径粘贴
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
//以下操作经过调试,适用多种情况
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_LEFT);
robot.keyRelease(KeyEvent.VK_LEFT);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
java robot 操作完下载框之后,不能直接切换回页面selenium操作。这种情况没找到好的解决办法,我一般都会将下载操作放在测试用例的最后面,或者在下载之后刷新(refresh、get)页面再使用selenium。
在IE浏览器上作自动化操作时,会遇到弹框(脚本使浏览器变慢,停止运行此脚本),或者代码报异常(org.openqa.selenium.UnhandledAlertException:Modal dialog present with text:停止运行此脚本吗?)。
这样的问题我们仍然可以使用Java robot来处理(网上也有其它的,不是每个人都合适),思路:try catch这个异常然后robot关闭弹窗。
//这是对kafka自带工具包的扩展object GetOffsetShellWrap {//在主函数添加一个参数mapdef main(args: Array[String],map: ArrayBuffer[String]): Unit ={//对参数的解析val parser= newOptionParserval brokerListOpt= parser.accepts("broker-...
url字符串是一个结构化的字符串,由好几个有意义部分组成。我们在工作中不可避免的会用到其中的某个部分,最原始的通过字符串截取和正则匹配的方法难免用起来会不太方便和美观,所以在我们的nodejs中提供了一个处理和解析url的模块url,该模块提供了一些实用的函数使我们解析起来更加的方便快捷,那接下里我们来分析一下它提供的常用的函数的用法引入url模块const url = require("url");1、parse(urlStr,queryString,AnalysisHost)Node.js.
本文用示例介绍Java中的DateTimeFormatter的用法。 Java中的DateTimeFormatter是用来格式化JDK8的新的日期类的,比如:LocalDateTime、LocalDate、LocalTime。实例package org.example.a;import java.time.LocalDateTime;import java.time.format.DateTimeFormatter;public ...
ORB-SLAM(三)地图初始化单目SLAM地图初始化的目标是构建初始的三维点云。由于不能仅仅从单帧得到深度信息,因此需要从图像序列中选取两帧以上的图像,估计摄像机姿态并重建出初始的三维点云。ORB-SLAM中提到,地图初始化常见的方法有三种。方法一追踪一个已知物体。单帧图像的每一个点都对应于空间的一条射线。通过不同角度不同位置扫描同一个物体,期望能
limit 与offset的用法在mysql中一般使用limit来实现分页LIMIT后面跟一个参数,表示要提取的数量。如 :select* from test LIMIT 3 指提取前三条数据,类似sqlServer的top语法。LIMIT后面跟两个参数时,第一个参数是指第几行,第二个参数是取几条数据。如: select * from test limit 2,3; 这个SQL是指从第二行的下一行开始向下取3条数据。(即取:3,4,5行的三条数据)LIMIT和OFFSET组合使用时,LIMIT
如果启动前不对linux内核做任何更改,那么redis启动会报出警告,共三个:如下图所示第一个警告:The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.意思是:TCP backlog设置值,51
React Hooks 是 React 16.8 的新功能,可以在不编写 class 的情况下使用状态等功能,从而使得函数式组件从无状态的变化为有状态的。React 的类型包 @types/react 中也同步把 React.SFC (Stateless Functional Component) 改为了 React.FC (Functional Component)。通过这一升级,原先 cl...
养精蓄锐了两天接着肝,要开学了,焯!
算法竞赛入门经典(第二版)官网页面克隆【墙内用】2017年03月02日 12:46:53阅读数:1085链接源地址:https://code.google.com/archive/p/aoapc-book/官方资料 《算法竞赛入门经典》相关资料: BeginningAlgorithmContests 《算法竞赛入门经典——训练指南》相关资料: Training...
先看看栗子import numpya = numpy.array([[1,2], [3,4]])b = numpy.array([[5,6], [7,8]])#*号a*b>>>array([[ 5, 12], [21, 32]])#dota.dot(b)>&g...
//命令模式定义:将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化//对请求排队或者记录请求日志,以及支持可撤销的操作//模式结构//命令接口public interface Command { public void execute();}//具体的命令,需要封装与之对应的执行者Receiverpublic class ConcreteCommand implem