问题
如图,app搜索框旁没有搜索按钮,输入完搜索内容后,无法通过点击按钮进行搜索。百度查询最多的答案都是通过driver.keyevent(keycode)模拟键盘事件,搜索和回车键分别为84和66,但是实际运行代码,发现仍然无法进行搜索。又查了很多帖子资料,发现可能通过adb指令切换输入法,然后通过调起输入法再模拟键盘事件,然后尝试了一下,该问题已解决。
KEYCODE_ENTER 回车键 66
KEYCODE_SEARCH 搜索键 84
解决
我是使用模拟器进行调试的,下列步骤以模拟器为准
-
先给模拟器安装输入法,我是安装的搜狗输入法
-
使用“adb shell ime set com.sohu.inputmethod.sogou/.SogouIME”指令查看设备的输入法,如图一个是设备自带的输入法,一个是搜狗输入法,一个是appium的输入法
-
利用os库在代码中使用adb指令
os.system('adb shell ime set com.sohu.inputmethod.sogou/.SogouIME') #切换输入法为搜狗输入法 self.driver.keyevent(66) #触发键盘的回车事件 os.system('adb shell ime set io.appium.android.ime/.UnicodeIME') #切换回appium输入法
总结
appium自带的输入法没有GUI界面,所以无法触发“回车”事件,导致在没有按钮的情况下无法搜索。解决思路就是切换输入法达到调起键盘的目的,触发“回车”事件后再切换回appium输入法