App自动化中的键盘搜索问题

使用App模拟器执行自动化测试时键盘搜索场景(输入查询条件点击键盘上的查询按钮)是经常遇到的场景,但由于模拟器自带的键盘无法满足需求,新安装的输入法又容易对页面元素定位造成干扰,因此在测试过程中需要通过adb命令设置不同输入法的方式来实现这样的场景测试.

  • 前期准备条件

    1.在模拟器上安装合适的输入法(可以选用搜狗);
    2.在设置->语言和输入法界面中打开需要的输入法,如图所示:
    App自动化中的键盘搜索问题_第1张图片
    3.使用adb shell ime list -s命令查看模拟器中的输入法列表信息
    App自动化中的键盘搜索问题_第2张图片

  • 使用切换不同输入法的方式执行键盘搜索场景
    以下场景是通过转换输入法执行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模拟器中执行键盘搜索的问题,此方法只是一种执行方式,若有更好的方法可以一起讨论研究.

你可能感兴趣的:(App自动化测试)