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 中查询或执行另外的数据库操作的方法 摘要: 如果,你想在一台数据库服务器上,查询另一个台数据服务器的数据该如何做呢?如果,你想在同一台数据服务器上,在不同的数据库之间查询数据, ...
随机推荐
- Hash基础
BKDR Hash: 选取恰当的进制,可以把字符串中的字符看成一个大数字中的每一位数字,不过比较字符串和比较大数字的复杂度并没有什么区别 首先不要把任意字符对应到数字0,比如假如把a对应到数字0,那么 ...
- typedef int(init_fnc_t) (void)的理解
typedef int(init_fnc_t) (void); 这个就是一个取别名的过程. 我们通常情况下会如下使用 typedef :typedef int MyInt;MyInt a; 这个时候我 ...
- 5G技术被夸大?专家来测试一下
像大多数新技术一样,5G也带来了大量媒体宣传.这种炒作中有些伴随着事实的严重扭曲和5G技术实际功能的放大.但是,有一个普遍共识的说法是5G将实现“极速”,换句话说,与前几代产品相比,带宽要高得多. 这 ...
- iOS给UIView添加点击事件
我要给一个UIView对象topView添加点击事件,方法如下: 步骤1:创建手势响应函数 (void)event:(UITapGestureRecognizer *)gesture { //处理事件 ...
- Shell-06 函数
Shell-06 函数 #编写脚本,使用chkconfig命令,循环执行,关闭所有5级别服务 #!/bin/bash name=`chkconfig --list | cut -d' ' -f1` f ...
- bing 精美壁纸获取方式
右键检查 打开就行了
- 多线程--future模式初体验
第一次使用多线程,虽然理解的不是很透彻,但是也值得记录下.用的是future模式. 创建个线程池:private ExecutorService cachedThreadPool = Executor ...
- HDU1575--Tr A(矩阵快速幂)
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...
- sqli-labs(22)
接下里我们进入第二二关 好像和第21关一样 cookie的base64加密注入 闭合变成了双引号而已 0X01 构造语句进行尝试 " union select 1,2,3# IiB1bmlv ...
- 初识REST
RESTful介绍: REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”. 1 ...