Appium appium 基础之键盘处理

rywu · May 05, 2014 · Last by rwzhen replied at May 09, 2019 · 4550 hits

方法 1 AppiumDriver 实现了在上述功能,代码如下(java 版本)

driver.sendKeyEvent(66);
方法 2

HashMap keycode = new HashMap();
keycode.put("keycode", 82);
((JavascriptExecutor) driver).executeScript("mobile: keyevent", keycode);

方法 3
String cmdstr="adb shell input keyevent 66";
Runtime.getRuntime().exec(cmdstr).waitFor();
Thread.sleep(10000);

附录 keycode

电话键

KEYCODE_CALL 拨号键 5
KEYCODE_ENDCALL 挂机键 6
KEYCODE_HOME 按键 Home 3
KEYCODE_MENU 菜单键 82
KEYCODE_BACK 返回键 4
KEYCODE_SEARCH 搜索键 84
KEYCODE_CAMERA 拍照键 27
KEYCODE_FOCUS 拍照对焦键 80
KEYCODE_POWER 电源键 26
KEYCODE_NOTIFICATION 通知键 83
KEYCODE_MUTE 话筒静音键 91
KEYCODE_VOLUME_MUTE 扬声器静音键 164
KEYCODE_VOLUME_UP 音量增加键 24
KEYCODE_VOLUME_DOWN 音量减小键 25

控制键

KEYCODE_ENTER 回车键 66
KEYCODE_ESCAPE ESC 键 111
KEYCODE_DPAD_CENTER 导航键 确定键 23
KEYCODE_DPAD_UP 导航键 向上 19
KEYCODE_DPAD_DOWN 导航键 向下 20
KEYCODE_DPAD_LEFT 导航键 向左 21
KEYCODE_DPAD_RIGHT 导航键 向右 22
KEYCODE_MOVE_HOME 光标移动到开始键 122
KEYCODE_MOVE_END 光标移动到末尾键 123
KEYCODE_PAGE_UP 向上翻页键 92
KEYCODE_PAGE_DOWN 向下翻页键 93
KEYCODE_DEL 退格键 67
KEYCODE_FORWARD_DEL 删除键 112
KEYCODE_INSERT 插入键 124
KEYCODE_TAB Tab 键 61
KEYCODE_NUM_LOCK 小键盘锁 143
KEYCODE_CAPS_LOCK 大写锁定键 115
KEYCODE_BREAK Break/Pause 键 121
KEYCODE_SCROLL_LOCK 滚动锁定键 116
KEYCODE_ZOOM_IN 放大键 168
KEYCODE_ZOOM_OUT 缩小键 169

组合键

KEYCODE_ALT_LEFT Alt+Left
KEYCODE_ALT_RIGHT Alt+Right
KEYCODE_CTRL_LEFT Control+Left
KEYCODE_CTRL_RIGHT Control+Right
KEYCODE_SHIFT_LEFT Shift+Left
KEYCODE_SHIFT_RIGHT Shift+Right

基本

KEYCODE_0 按键'0' 7
KEYCODE_1 按键'1' 8
KEYCODE_2 按键'2' 9
KEYCODE_3 按键'3' 10
KEYCODE_4 按键'4' 11
KEYCODE_5 按键'5' 12
KEYCODE_6 按键'6' 13
KEYCODE_7 按键'7' 14
KEYCODE_8 按键'8' 15
KEYCODE_9 按键'9' 16
KEYCODE_A 按键'A' 29
KEYCODE_B 按键'B' 30
KEYCODE_C 按键'C' 31
KEYCODE_D 按键'D' 32
KEYCODE_E 按键'E' 33
KEYCODE_F 按键'F' 34
KEYCODE_G 按键'G' 35
KEYCODE_H 按键'H' 36
KEYCODE_I 按键'I' 37
KEYCODE_J 按键'J' 38
KEYCODE_K 按键'K' 39
KEYCODE_L 按键'L' 40
KEYCODE_M 按键'M' 41
KEYCODE_N 按键'N' 42
KEYCODE_O 按键'O' 43
KEYCODE_P 按键'P' 44
KEYCODE_Q 按键'Q' 45
KEYCODE_R 按键'R' 46
KEYCODE_S 按键'S' 47
KEYCODE_T 按键'T' 48
KEYCODE_U 按键'U' 49
KEYCODE_V 按键'V' 50
KEYCODE_W 按键'W' 51
KEYCODE_X 按键'X' 52
KEYCODE_Y 按键'Y' 53
KEYCODE_Z 按键'Z' 54

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 21 条回复 时间 点赞

好文,收了~!

匿名 #2 · August 17, 2014

Mark 收藏!

Appium 关于 ios 键盘的怎么处理的呢?

怎么输入 driver.sendKeyEvent(66);就提示报错,需要 import 什么类吗?

@lion Android 上的最近任务键 是数字多少? menu 键不能调起

#4 楼 @wenshi11019 我也遇到了这个问题,点不出来。你解决了吗?

rywu #7 · February 02, 2016 Author

#5 楼 @sanghuan1234 你好,最近一直没有做 手机测试,你到官网看看,能不能找到。抱歉

—— 来自 TesterHome 官方 安卓客户端

#8 楼 @lion 谢谢,这个问题已经解决了,是 driver 定义的时候用的 AppiumDriver ,改成 AndroidDriver 就可以了,不是 driver.sendkeyevent() 而是用 driver.presskeycode()

#4 楼 @wenshi11019 看我 9 楼的回复,希望可以帮到你

我也遇到了同样的问题,看了 9 楼的回复解决了,非常感谢!

请问各位大神,有些文本框,软键盘的回车键会变成搜索键,此时 appium 模拟键盘搜索或是回车,都无法起效果,应该怎么办呢?

楼主,我改用 android Driver 的后,传入 key 值,但是一直提示空指针,这中情况你有遇到过吗?

#12 楼 @tornadoltm 我也遇到这个问题,你是怎么解决的呢

9 楼好给力,多谢啊!最近一直被困扰怎么写个方法代替 clear 呢。

匿名 #17 · August 04, 2017
刘天民 回复

这个你解决了吗?我现在也遇到这个问题。有点头大了。

陌路微凉 回复

改成 AndroidDriver 的话也可以用来针对 iOS 系统有同样的效果吗?

我只做过 Android 端的,对 iOS 不熟悉

66666

有没有 对 IOS 处理的解决办法?

logging.info('click title_back')
self.driver.press_keycode(4)
time.sleep(1)
logging.info('click title_back again')
self.driver.press_keycode(4)

老师,请教一个问题
我是这样写的,第一个返回键执行了,第二个返回键没执行。是什么原因呢?应该怎么修改呢 谢谢·~~
logging.info('click title_back again') 是执行了的

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up