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;

猜你喜欢

转载自www.cnblogs.com/leohou/p/10878075.html
今日推荐