appium输入和清除操作各方法对比(android)
最近在写android app自动化测试时,发现输入和清除操作耗费时间比较长,下面我用了不同的方法进行输入和清除操作,对比下时间(选取测试的一组数据做分析),选出最佳方法。
1、输入操作
1.1、webElement.sendKeys()
可以看到 该方法的输入时间在5s 左右

1.2、actions.sendKeys().perform()
该方法是使用Actions类的sendKeys方法,sendKeys前需要先webElement.click()
从结果可以看到该方法的输入时间在3s左右

1.3、adb shell input text
该方法是直接使用adb命令进行输入,可以看出输入时间不到1s. 操作前需要先webElement.click()

1.4、总结
| 方法 | 第一次 | 第二次 | 第三次 | 第四次 | 解释 | 结果 |
|---|---|---|---|---|---|---|
| webElement.sendKeys() | 5112 | 5444 | 17045 | 5380 | 第三次默认进行了清除操作 | IOS、android 通用,用时最长 |
| actions.sendKeys().perform() | 5747 | 3203 | 3298 | 3757 | 第一次较长是等待元素可以点击 | iOS、android通用,用时较长 |
| adb shell input text | 3999 | 948 | 947 | 891 | 第一次较长是等待元素可以点击 | 只用于android,时间最短 |
2、清除操作
2.1、webElement.clear()
该方法在需要清除的元素没有内容时,耗费时间较长,在5s左右。清除元素有内容时时间在1s左右。如果是密码输入框,有几率出现清除不干净。

2.2、adb shell input keyevent 67
该方法直接使用adb命令删除,代码如下:
webElement.click
String conent = webElement.getText();
while (StringUtils.isNotBlank(conent)) {
ShellUtils.adbClear();---封装执行adb命令的方法
conent = webElement.getText();
}
从图可以看出,该删除方法耗时依赖于元素的长度,比如如果是手机号码,则删除要耗时十几秒。注意:如果是密码输入框,则不会进行清除。

2.3、pressKeyCode
该方法是 点击–全选–删除,代码
webElement.click ((AndroidDriver<WebElement>) driver).pressKeyCode(29, 28672); ((AndroidDriver<WebElement>) driver).pressKeyCode(112)
该方法删除时间稳定在1.3左右

2.4、总结
| 方法 | 第一次 | 第二次 | 第三次 | 第四次 | 解释 | 结果 |
|---|---|---|---|---|---|---|
| webElement.clear() | 146 | 5238 | 1198 | 4037 | 第一次判断了text为空,所以没有进行清除操作,第二次和第四次是密码输入框获取到text为空的原因。 | IOS、android 通用,密码输入框用时较长 |
| adb shell input keyevent 67 | 3239 | 723 | 11353 | 780 | 第一次较长是等待元素可以点击,第三次是要清楚的文案太长 | 只用于android,依赖文本长度,且密码输入框不能清除 |
| pressKeyCode | 3282 | 845 | 1288 | 1388 | 第一次较长是等待元素可以点击 | 只用于android,时间最短 |
3、结果
输入最终代码如下
case "sendKeys": webElement.click();
if (StringUtils.isNotEmpty(webElement.getText())
|| Boolean.valueOf(webElement.getAttribute("password"))) { //如果元素内容不为空或者是密码输入框,则先进行删除操作。pressKeyCode删除
((AndroidDriver<WebElement>) driver).pressKeyCode(29, 28672);
((AndroidDriver<WebElement>) driver).pressKeyCode(112); } ShellUtils.adbSendKeys(elementLocator.getActionValue());---adb 命令输入
break;
appium输入和清除操作各方法对比(android)的更多相关文章
- C语言清空输入缓冲区的N种方法对比
转自C语言清空输入缓冲区的N种方法对比 C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int get ...
- C语言清空输入缓冲区的N种方法对比【转】
转自:http://www.cnblogs.com/codingmylife/archive/2010/04/18/1714954.html C语言中有几个基本输入函数: //获取字符系列 int f ...
- C语言清空输入缓冲区的N种方法对比(转)
C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...
- Selenium_按钮的点击、文本框的输入和清除操作(3)
from selenium import webdriver driver = webdriver.Chrome() driver.maximize_window() driver.get(" ...
- UIAutomator2、Appium、Robotium搭建环境与框架对比
UIAutomator2.Appium.Robotium搭建环境与框架对比 一.框架介绍 Appium 特点 appium 是一个自动化测试开源工具,支持 iOS 平台和 Android 平台上的原生 ...
- interrupt interrupted isInterrupted 方法对比、区别与联系 多线程中篇(八)
interrupt interrupted isInterrupted 是三个“长相”非常类似的方法. 本文将对这三个方法简单的对比下,首先了解下线程停止的方式 线程停止方式 在Java中如果想停止一 ...
- iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比
iPhone开发 数据持久化总结(终结篇)—5种数据持久化方法对比 iphoneiPhoneIPhoneIPHONEIphone数据持久化 对比总结 本篇对IOS中常用的5种数据持久化方法进行简单 ...
- Android开发之按键、触摸屏和手势输入专业压力測试方法
按键输入.触摸屏输入和手势笔画输入等功能是Android开发的基本功能.其稳定性和健壮性对移动应用系统开发很重要.按键.触摸屏和手势输入专业压力測试方法能够使用Monkey,相应用程序进行压力測试,检 ...
- SQL 2005 中查询或执行另外的数据库操作的方法
原文:SQL 2005 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据, ...
随机推荐
- CSS3参数matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。那这六个值分别代表了什么参数?
matrix( a, b, c, d, e, f );a 水平缩放b 水平倾斜c 垂直倾斜d 垂直缩放e 水平移动f 垂直移动
- JDK的动态代理深入解析(Proxy,InvocationHandler)(转)
JDK的动态代理深入解析(Proxy,InvocationHandler)(转) 一.什么是动态代理 动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实.代理一般会实现它所表示的实际对象的 ...
- ZROI 19.08.03 分治与离线
经典问题,给一张图,支持加边/删边/询问两点连通性. 离线统计边权(删除时间),lct维护最大生成树即可. 也可以按时间分治,维护一个可回退并查集即可. 主定理 很好用,但是记不住. 有一种简明的替代 ...
- MYSQL<五>
-- ########## 01.LIMIT的使用和分页 ########## INSERT INTO studentinfo VALUES(NULL, '刘备', '男', 35), (NULL, ...
- 【shell】sed处理多行合并
有这么一个题 文件格式 table=t1 name owner address table=t2 id text col1 comment col5 table=t3 prod_name price ...
- F12谷歌开发者工具preserve log
谷歌开发者工具里面这个preserve log :保留请求日志,跳转页面的时候勾选上,可以看到跳转前的请求,也可适用于chrome开发者工具抓包的问题
- 查看有没有绑这个host
1.查看有没有绑这个host ping broker.vs.amap.com
- 模板_BIT
#include<bits/stdc++.h> #define maxn 500005 //#define int long long using namespace std; inlin ...
- 买SD卡和TF卡要买U3和A2协议的
A3 最低平稳写入30M/s
- swagger2简单使用
1.引入jar <!--引入swagger--> <dependency> <groupId>io.springfox</groupId> <ar ...