from Comm.log import MyLogger import time class PressKeys: '''模拟手机键盘''' #0-9数字对应的手机code NUMBWER_code ={ '0': 7, '1': 8, '2': 9, '3': 10, '4': 11, '5': 12, '6': 13, '7': 14, '8': 15, '9': 16 } # 手机键对应手机code PHONE_code ={ 'KEYCODE_CALL': 5, # 拨号键 'KEYCODE_ENDCALL': 6, # 挂机键 'KEYCODE_HOME': 3, # 按键Home '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 # 音量减小键 } #手机控制按键对应的手机code CONTROL_code = { 'KEYCODE_ENTER': 66, # 回车键 'KEYCODE_ESCAPE': 111, # ESC键 'KEYCODE_DAPD_CENTER': 23, # 导航键 确定键 'KEYCODE_DAPD_UP': 19, # 导航键 向上 'KEYCODE_DAPD_DOWN': 20, # 导航键 向下 'KEYCODE_DAPD_LEFT': 21, # 导航键 向左 'KEYCODE_DAPD_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': 61, # Tab键 'KEYCODE_NUM_LOCK': 143, # 小键盘锁 'KEYCODE_CAPS_LOCK': 115, # 大写锁定 'KEYCODE_BREAK': 121, # Break/Pause键 'KEYCODE_SCROLL_LOCK': 116, # 滚动锁定键 'KEYCODE_ZOOM_IN': 168, # 放大键 'KEYCODE_ZOOM_OUT': 169 # 缩小键 } #组合键对应的手机code COMBI_code ={ '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' } #英文对应的手机code WORDS_code = { '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 } class PressPhoneKeys: ''' 用unicode处理密码输入框不能通过sendkey发送的密码 ''' #处理输入的字符 def __init__(self,password,driver=None): self.driver = driver self.password = password self.pre = PressKeys() self.log = MyLogger("PressPhoneKeys.main") def parse_password(self): self.log.info("开始解析密码为数字") password_list = list(self.password) for i in password_list: if ord(i) >= 65 and ord(i) <= 90: self.log.info("点击大写输入") self.driver.press_keycode(self.pre.WORDS_code[i],64) elif ord(i) >= 97 and ord(i) <= 122: self.log.info("点击小写输入") self.driver.press_keycode(self.pre.WORDS_code[i.upper()]) elif ord(i) >= 48 and ord(i) <= 57: self.log.info("点击数字输入") self.driver.press_keycode(self.pre.NUMBWER_code[i]) class PressPassword: ''' 处理密码输入框不能通过sendkey发送的问题、 ''' dicts = {'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, ',': 55, '.': 56, '`': 68, '[': 71, ']': 72, '\\': 73, ';': 74, "'": 75, '*': 17, '#': 18, '-': 69, '=': 70, '/': 76, '@': 77, '+': 81, '(': 162, ')': 163 } def __init__(self,password,driver): self.driver = driver self.password = password def press_passwod(self): ''' input password ''' for i in self.password: if self.dicts.get(i): self.driver.press_keycode(self.dicts[i]) else: self.driver.press_keycode(self.dicts[i.lower()], 64) time.sleep(0.01)
python 实现手机端隐私键盘密码登录
最新推荐文章于 2024-05-18 16:42:38 发布