背景:在做自动化测试项目时,需要在文本框中输入一串数字和字母组合的字符串(注:此页面为webview无法使用send_keys方法)

要使用send_keys方法首先要知道键盘字符对应的数值,这个可以在网上百度下,我把相关的对应关系已逻列到了下边,从以下对应

关系可知大写字母A和小字字母a对应的数值都是29, 在使用press_keycode(29) 时,文本框中输出的是小写的a,那如何输入大写的A呢?

分析: 查看press_keycode函数说明: def press_keycode(self, keycode, metastate=None, flags=None)

:Args:

- keycode - the keycode to be sent to the device   发送到设备的键值编码
- metastate - meta information about the keycode being sent   将被发送的元信息
- flags - the set of key event flags  设置的按键事件标记

我们通过键盘正常输入大写字母的操作方式 有三种 1,按下左侧shift键+字母   2. 按下右侧shift键+字母  3.按下caps_lock大小写锁定键输入字符

方法:我们以采用每一个方法为例输入大写字母A

依次输入参数1输入字母A对应的数值 29  ,参数2 将元信息左shift 开关打开,参数3 模拟输入按下左shift键

(注:'META_SHIFT_LEFT_ON':64 'KEYCODE_SHIFT_LEFT':59  )

press_keycode(29,64,59)

 心得:由此方法可知,press_keycode 是可以模拟键盘的组如输入的如shifte+键盘,ctrl+键盘等等,需要与 META_键_ON 同时运用。

def getMobileKey():
key={'0':7,'1':8,'2':9,'3':10,'4':11,'5':12,'6':13,'7':14,'8':15,'9':16,
'A':29,'B':30,'C':31,'D':32,'E':33,'F':34,'G':35,'H':36,'I':37,'J':38,
'K':39,'L':40,'M':41,'N':42,'O':43,'P':44,'Q':45,'R':46,'S':47,'T':48,
'U':49,'V':50,'W':51,'X':52,'Y':53,'Z':54,
'a':29,'b':30,'c':31,'d':32,'e':33,'f':34,'g':35,'h':36,'i':37,'j':38,
'k':39,'l':40,'m':41,'n':42,'o':43,'p':44,'q':45,'r':46,'s':47,'t':48,
'u':49,'v':50,'w':51,'x':52,'y':53,'z':54,
'META_ALT_LEFT_ON':16,
'META_ALT_MASK':50,
'META_ALT_ON':2,
'META_ALT_RIGHT_ON':32,
'META_CAPS_LOCK_ON':1048576,
'META_CTRL_LEFT_ON': 8192,
'META_CTRL_MASK':28672,
'META_CTRL_ON':4096,
'META_CTRL_RIGHT_ON':16384,
'META_FUNCTION_ON':8,
'META_META_LEFT_ON':131072,
'META_META_MASK':458752,
'META_META_ON':65536,
'META_META_RIGHT_ON':262144,
'META_NUM_LOCK_ON':2097152,
'META_SCROLL_LOCK_ON':4194304,
'META_SHIFT_LEFT_ON':64,
'META_SHIFT_MASK':193,
'META_SHIFT_ON':1,
'META_SHIFT_RIGHT_ON':128,
'META_SYM_ON':4,
'KEYCODE_APOSTROPHE':75,
'KEYCODE_AT':77,
'KEYCODE_BACKSLASH':73,
'KEYCODE_COMMA':55,
'KEYCODE_EQUALS':70,
'KEYCODE_GRAVE':68,
'KEYCODE_LEFT_BRACKET':71,
'KEYCODE_MINUS':69,
'KEYCODE_PERIOD':56,
'KEYCODE_PLUS':81,
'KEYCODE_POUND':18,
'KEYCODE_RIGHT_BRACKET':72,
'KEYCODE_SEMICOLON':74,
'KEYCODE_SLASH':76,
'KEYCODE_STAR':17,
'KEYCODE_SPACE':62,
'KEYCODE_TAB':61,
'KEYCODE_ENTER':66,
'KEYCODE_ESCAPE':111,
'KEYCODE_CAPS_LOCK':115,
'KEYCODE_CLEAR':28,
'KEYCODE_PAGE_DOWN':93,
'KEYCODE_PAGE_UP':92,
'KEYCODE_SCROLL_LOCK':116,
'KEYCODE_MOVE_END':123,
'KEYCODE_MOVE_HOME':122,
'KEYCODE_INSERT':124,
'KEYCODE_SHIFT_LEFT':59,
'KEYCODE_SHIFT_RIGHT':60,
'KEYCODE_F1':131,
'KEYCODE_F2':132,
'KEYCODE_F3':133,
'KEYCODE_F4':134,
'KEYCODE_F5':135,
'KEYCODE_F6':136,
'KEYCODE_F7':137,
'KEYCODE_F8':138,
'KEYCODE_F9':139,
'KEYCODE_F10':140,
'KEYCODE_F11':141,
'KEYCODE_F12':142,
'KEYCODE_BACK':4,
'KEYCODE_CALL':5,
'KEYCODE_ENDCALL':6,
'KEYCODE_CAMERA':27,
'KEYCODE_FOCUS':80,
'KEYCODE_VOLUME_UP':24,
'KEYCODE_VOLUME_DOWN':25,
'KEYCODE_VOLUME_MUTE':164,
'KEYCODE_MENU':82,
'KEYCODE_HOME':3,
'KEYCODE_POWER':26,
'KEYCODE_SEARCH':84,
'KEYCODE_NOTIFICATION':83,
'KEYCODE_NUM':78,
'KEYCODE_SYM':63,
'KEYCODE_SETTINGS':176,
'KEYCODE_DEL':67,
'KEYCODE_FORWARD_DEL':112,
'KEYCODE_NUMPAD_0':144,
'KEYCODE_NUMPAD_1':145,
'KEYCODE_NUMPAD_2':146,
'KEYCODE_NUMPAD_3':147,
'KEYCODE_NUMPAD_4':148,
'KEYCODE_NUMPAD_5':149,
'KEYCODE_NUMPAD_6':150,
'KEYCODE_NUMPAD_7':151,
'KEYCODE_NUMPAD_8':152,
'KEYCODE_NUMPAD_9':153,
'KEYCODE_NUMPAD_ADD':157,
'KEYCODE_NUMPAD_COMMA':159,
'KEYCODE_NUMPAD_DIVIDE':154,
'KEYCODE_NUMPAD_DOT':158,
'KEYCODE_NUMPAD_EQUALS':161,
'KEYCODE_NUMPAD_LEFT_PAREN':162,
'KEYCODE_NUMPAD_MULTIPLY':155,
'KEYCODE_NUMPAD_RIGHT_PAREN':163,
'KEYCODE_NUMPAD_SUBTRACT':156,
'KEYCODE_NUMPAD_ENTER':160,
'KEYCODE_NUM_LOCK':143,
'KEYCODE_MEDIA_FAST_FORWARD':90,
'KEYCODE_MEDIA_NEXT':87,
'KEYCODE_MEDIA_PAUSE':127,
'KEYCODE_MEDIA_PLAY':126,
'KEYCODE_MEDIA_PLAY_PAUSE':85,
'KEYCODE_MEDIA_PREVIOUS':88,
'KEYCODE_MEDIA_RECORD':130,
'KEYCODE_MEDIA_REWIND':89,
'KEYCODE_MEDIA_STOP':86,
}
return key

Appium+python 使用 press_keycode 如何输入大写字母的更多相关文章

  1. appium+python自动化61-中文输入乱码问题解决

    前言 在夜神模拟器上输入中文,发现是乱码,将unicodeKeyboard和resetKeyboard参数设置为True了,发现还是没法解决. 打开手机设置语言和输入法,发现找不到Appium And ...

  2. 【python 2.7】输入任意字母数字,输出其对应的莫尔斯码并播放声音

    #python 2.7 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import winsound,sys,time __author ...

  3. appium+python自动化39-adb shell输入中文(ADBKeyBoard)

    前言 上一篇提到"adb shell input textyoyo" 可以通过adb 输入英文的文本,由于不支持unicode编码,所以无法输入中文,github上有个国外的大神写 ...

  4. 用大写字母输入 Linux 命令,实现以 sudo 用户权限运行

    我们知道,一些 Linux 命令是要通过 sudo 权限才能运行的,这需要我们每次使用这些命令时在前面加一个 sudo ,十分繁琐.今天给大家介绍一个好用的工具 SUDO ,它只需要我们用大写字母键入 ...

  5. 完美解决苹果电脑mac终端无法输入大写T的问题

    [本文出自天外归云的博客园] 最近突然发现我的苹果电脑mac终端无法输入大写字母T,今天终于在同事的帮助下解决了!之前在网上查解决方法,感觉步骤描述欠佳!今天记录一下这个踩坑经验: 完美解决! 首先打 ...

  6. python实现输入任意一个大写字母生成金字塔的示例

    输入任意一个大写字母,生成金字塔图形 def GoldTa(input): L = [chr(i) for i in range(65, 91)] # 大写字母A--Z idA = 65 # 从A开始 ...

  7. JavaScript实现在页面上的文本框中输入小写字母自动变为大写字母

    <script language="javascript" type="text/javascript"> $(function () { $(&q ...

  8. android 设置字体颜色、EditText自己主动输入转换成大写字母的多种方式

    在TextView上面设置某一个字的字体颜色为指定颜色时,能够通过java类SpannableString类和Html语言来实现. (一)SpannableString类方式 private void ...

  9. C#根据用户输入字符串,输出大写字母有几个,小写字母有几个

    static void Main(string[] args) { // 根据用户输入字符串,输出大写字母有几个,小写字母有几个. Console.WriteLine("请输入一行英文代码& ...

随机推荐

  1. Oracle 基础概念

    数据库是一系列物理文件的集合(数据文件,控制文件,联机日志,参数文件等) --查询当前数据库名:select name from v$database; 数据库实例是一组Oracle后台进程/线程以及 ...

  2. VC Edit控件单行垂直居中和定制外框的实现

    Edit控件很奇怪,不在WM_PAINT里面画图,且外框也不在WM_NCPAINT里面画,客户区就是整个窗口,非客户区没有.也没有垂直居中风格可以设置.在界面排版的时候,看起来怪怪的. 下面提供Edi ...

  3. cesium 飞线 瓣体传感器(雷达扫描) 效果

    参考:github地址 本人新手,npm webpack 这些还是一知半解,只记录自己得到成功结果的操作步骤,可能存在多余或错误的步骤. 1.github 把代码下载下来,解压. 2.webstorm ...

  4. 如何把一个vue组件改为ionic/angular组件

    同是mvvm框架,他们之间是很相似的,如何你已经熟悉其中的一个,那么另一个也就基本上也就会的差不多了. 一.动态属性.值.事件绑定 vue中使用v-bind:或者之间分号:进行绑定 ng中左括号[]进 ...

  5. python函数把可变数据类型当默认参数值的问题(转)

    add by zhj: 文章写的很好,其实只要默认参数在函数中只读不写,那默认值就不会被修改,可变类型做默认参数就不会有问题 方法二中,当result is None时,修改result的指向,不再指 ...

  6. 包的初识和进阶&异常处理

    包 包是一种通过使用‘.模块名’来组织python模块名称空间的方式. 1. 无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都要第一时间提高警 ...

  7. Python第3次作业--李珠霞

    习题1: **1.初始化一个数据集,包括5-10位同学的成绩数据(数据类型不限),数据格式如下: **学号 姓名 Java C语言 Python2017XXXX 小白 87 68 922017XXXX ...

  8. vue移动端适配

    https://www.w3cplus.com/mobile/vw-layout-in-vue.html

  9. EntityFramework如何创建索引?

    一.首先创建一个类 FwEntityTypeConfiguration 继承 EntityTypeConfiguration ,该类完整代码如下: using System.Data.Entity.M ...

  10. java消息队列--ActiveMQ

    1.下载安装ActiveMQ ActiveMQ官网下载地址:http://activemq.apache.org/download.html ActiveMQ 提供了Windows 和Linux.Un ...