Robot Framework如何向Android发送keycode键盘事件

本文详细介绍如何在Android测试中使用RobotFramework与Appium发送键盘事件。重点介绍PressKeycode关键字及其参数,列举常用键码如返回键、菜单键等,并提供代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转自:https://www.aliyun.com/jiaocheng/4255.html

  • 摘要:在之前的博客“RobotFramework+Appium测试Android设备”,我们已经介绍了如何使用RobotFramework和Appium测试Android设备,如果对这部分还不熟悉的童鞋,可以参考本人之前的博客。今天,我聊一聊如何向Android发送keycode键盘事件,这是在Android测试中必不可少的部分。开门见山,我们今天要谈到的keyword就是“PressKeycode”,它有2个参数keycode和metastate=None。对于Android的k
  • 在之前的博客“Robot Framework + Appium测试Android设备”,我们已经介绍了如何使用Robot Framework和Appium测试Android设备,如果对这部分还不熟悉的童鞋,可以参考本人之前的博客。

     

    今天,我聊一聊如何向Android发送keycode键盘事件,这是在Android测试中必不可少的部分。

     

    开门见山,我们今天要谈到的keyword就是“Press Keycode”,它有2个参数keycode 和 metastate=None。

     

    对于Android的keycode,大家关于参考Android官方链接http://developer.android.com/reference/android/view/KeyEvent.html 

     

    关于第二个参数metastate,主要代表是否有Shift/Alt这些Function键按下,对于Android而言,很少用到,我们在此就不谈了,直接赋值"None"即可。

     

    下面举例来说明,比如要向系统发送返回事件,参考代码如下,

     

    ${KEYCODE_BACK}4
    Press Keycode${KEYCODE_BACK}None

     

    注意,需要事先声明“KEYCODE_BACK”,否则robot framework不能识别。

    下面,列出一些常用的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 
### Python Monkey Testing Automation Framework Tools Python 提供了多种工具和框架来支持自动化测试,其中包括专门针对 Android 平台的 Monkey 测试工具。以下是几个常用的 Python 工具及其功能: #### 1. **MonkeyRunner** MonkeyRunner 是由 Google 开发的一个官方工具,主要用于 Android 应用程序的功能测试和回归测试。它可以通过模拟用户操作(点击、滑动等)以及发送键盘事件等方式控制设备或仿真器[^1]。 - 支持多设备管理。 - 不需要接触应用程序源码即可完成自动化测试。 - 使用 Jython 脚本来调用其 API。 示例代码如下: ```python from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice device = MonkeyRunner.waitForConnection() if device: package = 'com.example.app' activity = '.MainActivity' runComponent = f'{package}/{activity}' # 启动应用 device.startActivity(component=runComponent) # 发送触摸事件 device.touch(50, 50, MonkeyDevice.DOWN_AND_UP) # 截图并保存到本地文件 result = device.takeSnapshot() result.writeToFile('screenshot.png', 'png') ``` --- #### 2. **Appium** 虽然 Appium 主要以其 Selenium WebDriver 的集成而闻名,但它也完全支持 Python 编写的测试脚本。通过绑定 UIAutomator 和 XCTest 框架,它可以实现跨平台的应用测试[^4]。 - 可以使用任意一种 WebDriver 兼容的语言编写测试脚本,包括 Python。 - 支持 iOS 和 Android 设备上的黑盒测试。 - 对于复杂场景下的交互式测试非常有用。 安装命令: ```bash pip install Appium-Python-Client ``` 简单示例: ```python from appium import webdriver desired_caps = { 'platformName': 'Android', 'automationName': 'UiAutomator2', 'deviceName': 'emulator-5554', 'appPackage': 'com.example.app', 'appActivity': '.MainActivity' } driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) element = driver.find_element_by_id("button_id") element.click() # 关闭会话 driver.quit() ``` --- #### 3. **Pylot** Pylot 是一个开源的压力测试工具,能够生成并发负载,并允许定义复杂的测试用例集。尽管它的主要用途是性能测试,但在某些情况下也可以扩展用于功能性验证[^3]。 - 基于 XML 文件配置请求 URL、方法、正文等内容。 - 实现实时监控统计与错误报告。 基本结构展示: ```xml <TestSuite> <TestCase name="LoginTest"> <Request method="POST" url="/login"> <Body>username=admin&password=password</Body> </Request> <Verify statusCode="200"/> </TestCase> </TestSuite> ``` 运行方式: ```bash pylot --config=test.xml ``` --- #### 4. **Robot Framework + AppiumLibrary** 如果希望采用更灵活的关键字驱动模式,则可以选择 Robot Framework 配合 AppiumLibrary 插件来进行移动端界面级的操作[^4]。这种方式特别适合团队协作环境中的 BDD 方法论实践者们。 依赖项安装: ```bash pip install robotframework-appiumlibrary ``` 样例片段: ```robot *** Settings *** Library AppiumLibrary *** Variables *** ${PLATFORM} Android ${DEVICE_NAME} emulator-5554 ${APP_PACKAGE} com.example.app ${APP_ACTIVITY} .MainActivity *** Test Cases *** Open Application And Perform Action Open Application http://${HOST}:4723/wd/hub platformName=${PLATFORM} ... deviceName=${DEVICE_NAME} appPackage=${APP_PACKAGE} ... appActivity=${APP_ACTIVITY} Click Element id=text_input_field Input Text id=text_input_field Hello World! Press Keycode 66 # Enter key press simulation ``` --- #### 总结 每种工具都有自己的适用范围和技术特点,在选择具体方案前需考虑项目需求、开发成本及时效等因素综合评估后再决定最佳组合策略。 问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值