最近在写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.clickString 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;

转载于:https://www.cnblogs.com/leohou/p/10878075.html

appium输入和清除操作各方法对比(android)相关推荐

  1. C语言清空输入缓冲区的N种方法对比

    C语言中有几个基本输入函数: //获取字符系列 int fgetc(FILE *stream); int getc(FILE *stream); int getchar(void); //获取行系列 ...

  2. C语言清空输入缓冲区的N种方法对比(转)

    C语言中有几个基本输入函数: //获取字符系列int fgetc(FILE *stream);int getc(FILE *stream);int getchar(void);//获取行系列char ...

  3. 用户操作计算机的方法,操作者向计算机输入信息最常用的方法是(B).doc

    操作者向计算机输入信息最常用的方法是(B). A.用文字 B.用键盘 C.用语言 D.用扫描仪 软盘加上写保护后,对它可以进行的操作是(A). A.只能读盘,不能写盘 B.既可读盘,又可写盘 C.只能 ...

  4. JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法

    JS获取input框用户输入信息作为数组存储传输给后台数据库操作存储方法 获取input框用户输入信息数组存储 var datas = {Id: idData.id,OrderDetailCode: ...

  5. 帝国cms清除html标签,帝国CMS结合项筛选带已选择的条件和删除操作的方法

    本文实例讲述了帝国CMS结合项筛选带已选择的条件和删除操作的方法.分享给大家供大家参考.具体实现方法如下: 这个功能是在帝国的官方插件帝国官方插件-结合项列表属性筛选显示下载基础上修改而来的,(官方插 ...

  6. addslashes 及 其他 清除空格的方法是不安全的

    清除空格的方法是不安全的,部分原因是因为字符中的空格非常多,例如 "addslashes的问题在 于黑客 可以用0xbf27来代替单引号,而addslashes只是将0xbf27修改为0xb ...

  7. golang string转int8_Go教程:23 string转换int类型方法对比

    Go教程:23 string转换int类型方法对比 Go语言时一个强类型的语言,但是强类型的语言有也强类型的语言的烦恼.这个烦恼就是类型转换, 接下来我们就讲解一下怎么把 string 类型变量转换成 ...

  8. android 指纹 分发,移动终端及基于指纹识别来实现操作的方法和系统与流程

    本发明涉及移动终端技术领域,具体地说,移动终端及基于指纹识别来实现操作的方法和系统. 背景技术: 随着科学技术的不断发展和社会的进步,近年来指纹识别的流行,很多移动终端上均设置有指纹识别装置. 现有移 ...

  9. python写界面输入测试脚本_python+Selenium自动化测试——输入,点击操作

    这是我的第一个真正意思上的自动化脚本. 1.练习的测试用例为: 打开百度首页,搜索"胡歌",然后检索列表,有无"胡歌的新浪微博"这个链接 2.在写脚本之前,需要 ...

最新文章

  1. java同步与死锁_Java多线程 - 线程同步与死锁
  2. CountDownLatch的实现分析
  3. flutter 调用原生安卓插件_Flutter 如何调用Android和iOS原生代码-阿里云开发者社区...
  4. B/S,C/S简单介绍
  5. 吴恩达 NIPS 2016:利用深度学习开发人工智能应用的基本要点(含唯一的中文版PPT)...
  6. SQL实战篇:SQL解决连续X天的问题
  7. 在Linux上运行Windows软件的4种以上方法
  8. 把一张合成图分拆出各个小图
  9. c++ 0x8000ffff灾难性故障_电容器毁灭性故障,让PCB板直接报废!
  10. MongoDB查询时排序字段为int类型和string类型的区别
  11. 华为c8818刷原生Android 6,华为C8818(电信4G)一键救砖教程,轻松刷回官方系统
  12. access简述报表的功能_报表的主要功能_access标签报表有什么作用
  13. 【3dmax千千问】初学3dmax插件神器第22课:3dmax效果图渲染进阶教程|VRAY相机为何要与VRAY灯光、VRAY材质、VRAY贴图等进行匹配呢?食住玩3dmax千千问教程
  14. 插值型求积公式的实现
  15. 男生必学,与女生聊天技巧
  16. 2022当代科学技术前沿知识 课后测试
  17. 视觉SLAM开源方案汇总及设备选型建议
  18. 一句话木马、中国菜刀、图片一句话制作、过狗一句话
  19. day2(sdasdasdasdasd)
  20. 5款工具彻底帮你解决百度网盘限速问题!

热门文章

  1. boost::kruskal_minimum_spanning_tree用法的测试程序
  2. boost::graph模块实现在无向图上使用连通分量算法
  3. boost::function_types::has_property_tag用法的测试程序
  4. boost::fibers::buffered_channel< std::string >用法的测试程序
  5. Boost:标记的的bimap双图测试程序
  6. ITK:计算PCA形状模型
  7. DCMTK:OFCharacterEncoding的测试程序
  8. 打印页面横向怎么设置_条码打印软件标签纸页面设置的方法
  9. pbl和sbl_综合运用PBL和SBL教学法提高眼科带教质量的探索
  10. node软件环境安装