appium输入和清除操作各方法对比(android)
阅读原文时间:2023年07月09日阅读:3

最近在写android app自动化测试时,发现输入和清除操作耗费时间比较长,下面我用了不同的方法进行输入和清除操作,对比下时间(选取测试的一组数据做分析),选出最佳方法。

1、输入操作

可以看到 该方法的输入时间在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,时间最短

2、清除操作

该方法在需要清除的元素没有内容时,耗费时间较长,在5s左右。清除元素有内容时时间在1s左右。如果是密码输入框,有几率出现清除不干净。

该方法直接使用adb命令删除,代码如下:

webElement.click

String conent = webElement.getText();

while (StringUtils.isNotBlank(conent)) {

ShellUtils.adbClear();---封装执行adb命令的方法

conent = webElement.getText();

}

从图可以看出,该删除方法耗时依赖于元素的长度,比如如果是手机号码,则删除要耗时十几秒。注意:如果是密码输入框,则不会进行清除。

该方法是 点击–全选–删除,代码

webElement.click

((AndroidDriver) driver).pressKeyCode(29, 28672);

((AndroidDriver) driver).pressKeyCode(112)

该方法删除时间稳定在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,时间最短

3、结果

输入最终代码如下

case "sendKeys":

webElement.click();
if (StringUtils.isNotEmpty(webElement.getText())
|| Boolean.valueOf(webElement.getAttribute("password"))) {

//如果元素内容不为空或者是密码输入框,则先进行删除操作。pressKeyCode删除
((AndroidDriver) driver).pressKeyCode(29, 28672);
((AndroidDriver) driver).pressKeyCode(112);

}

ShellUtils.adbSendKeys(elementLocator.getActionValue());---adb 命令输入
break;

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章