最近在写android app自动化测试时,发现输入和清除操作耗费时间比较长,下面我用了不同的方法进行输入和清除操作,对比下时间(选取测试的一组数据做分析),选出最佳方法。
可以看到 该方法的输入时间在5s 左右
该方法是使用Actions类的sendKeys方法,sendKeys前需要先webElement.click()
从结果可以看到该方法的输入时间在3s左右
该方法是直接使用adb命令进行输入,可以看出输入时间不到1s. 操作前需要先webElement.click()
方法
第一次
第二次
第三次
第四次
解释
结果
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,时间最短
该方法在需要清除的元素没有内容时,耗费时间较长,在5s左右。清除元素有内容时时间在1s左右。如果是密码输入框,有几率出现清除不干净。
该方法直接使用adb命令删除,代码如下:
webElement.click
String conent = webElement.getText();
while (StringUtils.isNotBlank(conent)) {
ShellUtils.adbClear();---封装执行adb命令的方法
conent = webElement.getText();
}
从图可以看出,该删除方法耗时依赖于元素的长度,比如如果是手机号码,则删除要耗时十几秒。注意:如果是密码输入框,则不会进行清除。
该方法是 点击–全选–删除,代码
webElement.click
((AndroidDriver
((AndroidDriver
该方法删除时间稳定在1.3左右
方法
第一次
第二次
第三次
第四次
解释
结果
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,时间最短
输入最终代码如下
case "sendKeys":
webElement.click();
if (StringUtils.isNotEmpty(webElement.getText())
|| Boolean.valueOf(webElement.getAttribute("password"))) {
//如果元素内容不为空或者是密码输入框,则先进行删除操作。pressKeyCode删除
((AndroidDriver
((AndroidDriver
}
ShellUtils.adbSendKeys(elementLocator.getActionValue());---adb 命令输入
break;
手机扫一扫
移动阅读更方便
你可能感兴趣的文章