使用App模拟器执行自动化测试时键盘搜索场景(输入查询条件点击键盘上的查询按钮)是经常遇到的场景,但由于模拟器自带的键盘无法满足需求,新安装的输入法又容易对页面元素定位造成干扰,因此在测试过程中需要通过adb命令设置不同输入法的方式来实现这样的场景测试.
-
前期准备条件
1.在模拟器上安装合适的输入法(可以选用搜狗);
2.在设置->语言和输入法界面中打开需要的输入法,如图所示:
3.使用adb shell ime list -s命令查看模拟器中的输入法列表信息
-
使用切换不同输入法的方式执行键盘搜索场景
以下场景是通过转换输入法执行2次键盘搜索
//使用adb shell命令切换输入法(set后面的信息需要用到前面说到的命令)
String cmdSouGouIme = "cmd /c adb shell ime set com.sohu.inputmethod.sogou/.SogouIME";
String cmdDefaultIme = "cmd /c adb shell ime set io.appium.settings/.AppiumIME";
//使用adb shell命令通过keyevent关键字执行搜索操作(keyevent 66表示搜索,其他关键字可以查看java-client.jar里面io.appium.java_client.android.nativekey包中枚举类AndroidKey)
String cmdSearch = "cmd /c adb shell input keyevent 66";
FindElement.findElementByText(androidDriver, "会员", 8).click();
//第一次搜索
FindElement.findElementById(androidDriver, "id/et_member", 3).sendKeys("会员01");
//切换到需要的输入法
CmdExecute.execute(cmdSouGouIme);
//输入完毕之后增加点击操作是要将键盘调出,否则cmdSearch命令将无法执行
FindElement.findElementById(androidDriver, "id/et_member", 3).click();
//执行搜索操作
CmdExecute.execute(cmdSearch);
IntervalTime.waitTime(2);
//为保证输入法键盘不影响页面,搜索操作完毕后将输入法切换到默认输入法关掉键盘
CmdExecute.execute(cmdDefaultIme);
//第二次搜索(操作方式与第一次一致)
FindElement.findElementById(androidDriver, "id/et_member", 3).sendKeys("132****9072");
CmdExecute.execute(cmdSouGouIme);
IntervalTime.waitTime(2);
FindElement.findElementById(androidDriver, "id/et_member", 3).click();
CmdExecute.execute(cmdSearch);
以上即是App模拟器中执行键盘搜索的问题,此方法只是一种执行方式,若有更好的方法可以一起讨论研究.