基于appium的移动端自动化测试,密码键盘无法识别问题
基于appium做自动化测试,APP密码键盘无法识别问题解决思路
这个问题的解决思路如下:
1.针对iOS无序键盘:首先,iOS的密码键盘是可识别的,但是,密码键盘一般是无序的。针对这个情况,思路是用Macaca或者appium-inspector来获取到每个键的信息的。首先,定义一个数据字典key_num={},把每个键的xpath保存到字典里面去。这样key_num里面保存的就是key_num[0]="第一个按键的xpath路径",key_num[1]="第二个按键的xpath路径"以此类推,记录完,整个键盘的xpath路径。然后,通过xpath的值就可以取得该元素的name值,这个值就是该键的数字,取name值方式:对象.get_attribute("name")。然后,定义另一个字典keys_num={},来保存每个按键对应的xpath和对应的数字。比如:第一个键是“6”,就写keys_num[6]="第一个键的xpath",第二个键是“4”,keys_num[4]="第二个键的xpath",以此类推,记录完整个键盘的数字和对应的xpath。这样在输入密码的时候,只要遍历密码,例如:密码是“666888”,那么密码的第一值是6,我们就取keys_num[6]的值就可以获取到“数字6”的xpath,在通过get_element_by_xpath("数字6的xpath")方式就可以获取到该元素,再用 元素.click()进行点击,就可以输入该值了。
2.针对Android无序且无法识别键盘:Android的密码键盘一般是无序而且不可识别的。我们要用到ocr这个技术,大家不要紧张,可以去找相关的ocr类库,比如用python写脚本的人就可以找python的ocr类库,使用很简单。下面说如何解决密码键盘识别问题。首先,用adb截取密码键盘界面,把键盘界面通过ocr来识别,获取到键盘数字的顺序,例如:键盘的数字顺序是“9638527410”,那么我们就可以知道该次弹出的键盘第一排是“963”,第一个键是“9”,第二个键是“6”以此类推。但是,有的人会问了“我们既然无法识别键盘,那么如何获取键盘信息呢?”,对,我们只能通过ocr获取到键盘数字排序却无法获取到按键信息。那么如何点击呢?接下来,我们打开andorid的“指针位置”这个功能,计算出每个按键在屏幕的位置(计算方式:按百分比的方式计算,即:该键在屏幕的相对位置)。然后定义字典key_num_x={},key_num_y={}分别将该键的坐标记录下来,例如第一个键的值是6那么就写key_num_x[6]="第一个键的x坐标",key_num_y[6]="第一个键的y坐标"。以此类推。记录完所有的按键信息。这样在输入密码的时候,只要遍历密码,例如:密码是“666888”,那么密码的第一值是6,我们就取key_num_x[6]和key_num_y[6]的值,在通过 driver.tap([{x坐标,y坐标}])这个方法就可以点击了。
基于appium的移动端自动化测试,密码键盘无法识别问题的更多相关文章
- 基于Appium、Python的自动化测试
基于Appium.Python的自动化测试环境部署和实践 第一章 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile ...
- Appium+python移动端自动化测试-python库及pycharm安装(二)
一.安装python库 安装python库有很多种方法,如pip安装.源文件安装.运行包安装,但我们最常用的就是使用pip进行安装 Appium+python做移动端的自动化测试,所需要安装以下pyt ...
- 基于appium快速实现H5自动化测试
一.下载Appium-Server及库文件 库文件:jar包:java-client-3.1.0.jar Appium-Server:Appium服务器: 注:Appium包含客户端和服务端,客户端就 ...
- Appium+python移动端自动化测试-环境搭建(一)
搭建所在系统环境:Windows7版本64位系统 一.环境准备 jdk8.0.151 android-sdk_r20.3.4-windows python3.5 appium1.4.16.1 Node ...
- appium+python做移动端自动化测试
1 导言 1.1 编制目的 该文档为选用Appium作为移动设备原生(Native).混合(Hybrid).移动Web(Mobile Web)应用UI自动化测试的相关自动化测试人员.开发人员等提供 ...
- 基于appium的app自动化测试框架
基于appium框架的app自动化测试 App自动化测试主要难点在于环境的搭建,appium完全是基于selenium进行的扩展,所以app测试框架也是基于web测试框架开发的 一.设备连接 (即构建 ...
- 移动端自动化测试(一)之 Appium+Pyhton环境准备篇
移动端自动化测试(一)之 Appium+Pyhton环境准备篇 2016-11-17 16:51 by CockRoacher, 5046 阅读, 1 评论, 收藏, 编辑 由于工作的需要进行Andr ...
- 移动端自动化测试-WTF Appium?
手机App分为两大类,原生App(Native App)和混合APP(Hybrid App) 原生App(Native App) 原生App实际就是我们所常见的传统App开发模式,云端数据存储+App ...
- 移动端自动化测试-WTF Appium
手机App分为两大类,原生App(Native App)和混合APP(Hybrid App) 原生App(Native App) 原生App实际就是我们所常见的传统App开发模式,云端数据存储+App ...
随机推荐
- Java程序员入门:Java程序员面试失败的5大原因
1 说得太少 尤其是那些开放式的问题,如"请介绍下你自己"或"请讲一下你曾经解决过的复杂问题".面试官会通过你对这些技术和非技术问题的回答来评估你的激情.他们也 ...
- Java Trie树
Tire树,又叫字典树,主要是用来查找单词,词频统计的. 老规矩,直接上代码. package tireTree; public class TireTree { TireNode root; pub ...
- JavaScript 图片轮播入门
轮播要求:一个在页面居中的矩形框,图片依次从矩形框中经过 当图片完整占满矩形框时 停留一小段时间再向左边移动经过矩形框的图片自动跑到右边最后一个图的后面.核心原理:在一个for循环中利用offsetl ...
- 3018: [Usaco2012 Nov]Distant Pastures
3018: [Usaco2012 Nov]Distant Pastures Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 43 Solved: 20[ ...
- 1583: [Usaco2009 Mar]Moon Mooing 哞哞叫
1583: [Usaco2009 Mar]Moon Mooing 哞哞叫 Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 244 Solved: 126 ...
- Java引领新生活
阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我觉得师生关系应当是亲密无间,课上老师讲解学生配合,课下师生交流启发思考. 你有什么技能(学习,棋类,球类,乐器,艺术,游戏,......)比大多 ...
- servlet中的过滤器 国际化
1. 过滤器 基本概念 过滤器是需要在xml中配置的. 为什么需用到过滤器? 项目开发中,经常会涉及到重复代码的实现! 注册 ----à Servlet [1. 设置编码] ----à JSP 修改 ...
- yolov2训练ICDAR2011数据集
首先下载数据集train-textloc.zip 其groundtruth文件如下所示: 158,128,412,182,"Footpath" 442,128,501,170,&q ...
- 第一章 开发简单Java应用程序
1. 什么是程序? 程序一词来自生活,通常指完成某些事务的一种既定方式和过程(一组有序指令的集合). 2. Java的三个领域? Java SE:java技术核心(指桌面应用程序)如:QQ.百 ...
- salesforce 零基础学习(六十七)SingleEmailMessage 那点事
在salesforce开发中,发送邮件是一个很常见的功能.比如在进入审批流以后的通过和拒绝的操作需要发送邮件给记录的owner,和其他系统交互以后更改了某些状态通知相关的User或者Contact等等 ...