appium自动化测试框架,具体信息不便我重复,网上能够查找的资料也很多

我项目中在做自动化测试的过程中,遇到密码键盘,需要进行模拟点击输入的问题,使用appium提供的sent_keys方法不管用,原因是密码键盘必须得点击密码键盘进行输入才能够通过。

密码键盘的原理是每次点击一个按键,进行一次加密,点击结束后,按登录才能够登录通过。而send_keys的输入方法是直接使用系统的键盘发送键值到输入框,没有经过点击操作。

密码键盘的一个难点就在于,它没有id,而appium提供的定位方法大都是通过ID,name,class等元素进行页面定位的,看过所有的定位方法后,发现了通过坐标值也可以进行定位,而密码键盘要想定位成功,必须通过图像识别,识别出键盘所在的位置坐标信息

下面的功能就是通过图像识别方法对密码键盘所在的坐标进行识别。

所遇到的密码键盘如下图所示

面还有输入框的内容,我进行了截取。

解决思路:

1、图像识别,然后点击坐标

2、开发配合,给特定的app包,解除安全键盘。

而对于非自己的app是无法使用第二种方法的。

图像识别找到了opencv里面有match Template方法,可以在图片中找指定的图片,

步骤:

1、首先需要操作的位置进行截图并保存起来,切记按原图大小截取,尽可能小,比如:

2、然后就是在截取的屏幕上面查找这些数字对应的位置

3、按照位置在屏幕上点击

实现代码:

以需要输入密码为例,我写了如下代码,需要传入截图图片路径,还需要输入的密码。前面我已经将各个数字的图片保存在了本地,并以n0.jpg,n1.jpg,…保存,并和脚本放在一起。

我使用python写的脚本,当然你还需要安装opencv,下载路径:http://opencv.org/releases.html下载后吧build下面的python里面的cv2.pyd文件目录下面的lib\site-packages里面

代码如下

#coding:utf-8
import os
import timeimport cv2
import numpy as np
import matplotlib.pyplot as pltdef get_pay_keyboard_number_location(im, pwd):numbers = set(list(pwd))templates = {}positions = {}nimgpath = ""   #数字图片不在同目录时使用for i in numbers:templates[i]  = os.path.join(nimgpath, "n{}.jpg".format(i))start = time.time()img_rgb = cv2.imread(im)for teNum, tepath in templates.items():# print(tepath)template = cv2.imread(tepath)h, w = template.shape[:-1]res = cv2.matchTemplate(img_rgb, template, cv2.TM_CCOEFF_NORMED)threshold = .95    # 匹配度参数,1为完全匹配loc = np.where(res >= threshold)if len(loc) > 0:positions[teNum] = zip(*loc[::-1])[0]else:print("Can not found number: [{}] in image: [{}].".format(tepath, im))end = time.time()print(end-start)return [positions[n] for n in pwd]if __name__ == "__main__":ls = get_pay_keyboard_number_location('keyboard.jpg', '1234567890')print(ls)

上面的代码实现了获取每个数字的坐标,并以列表进行返回。

拿到坐标后就可以直接的通过appium的tap,如

TouchAction(driver).long_press(x = 180,y = 1400).perform()

进行点击操作了。

代码不一定严谨,欢迎指正

appium通过图像识别技术opencv解决密码键盘的模拟输入密码问题相关推荐

  1. Appium图像识别技术OpenCV

    什么时候我们需要用到图像识别? 在我们做 App 自动化测试的时候,会发现很多场景下元素没有 id.content-desc.text 等等属性,并且有可能也会碰到由于开发采用的是自定义 View,V ...

  2. Python实战案例,图像识别技术OpenCV,Python实现猫脸检测

    开发工具 Python版本:3.6.4 相关模块: cv2模块: 以及一些Python自带的模块. 环境搭建 安装Python并添加到环境变量,pip安装需要的相关模块即可. 原理简介 简单地讲一讲H ...

  3. 免费下载 | 某平台2980元「图像识别、OpenCV、神经网络」课程,仅此1次

    当下,人工智能已然跃居为全球话题的焦点,来自开发者.业界领袖.政策制定者乃至大众的关注正与日俱增. 深度学习的出现突破了过去机器学习领域浅层学习算法的局限,颠覆了语音识别.计算机视觉.图像识别.神经网 ...

  4. 网络信息传播中图像识别技术的意义

    电子科技大学 格拉斯哥学院 2017级柯入语 前言: 网络在人们日常生活中的地位越来越重要,而网络信息中有很大一部分为图像信息,人们可以通过图像识别技术解决多种社会问题. 时间:2018.11.10 ...

  5. 计算机在服装上的应用研究,图像识别技术在纺织品及服装研究中的应用

    图像识别技术在纺织品及服装研究中的应用 发布时间:2020-01-18 09:36所属分类:农业科技 摘 要:纺织品及服装研究与计算机.信息技术的融合发展是推进纺织品及服装产业智能化的必然途径,聚焦图 ...

  6. ni max不能连续采集图像_图像识别技术在智慧教室录播系统中的应用研究

    在落实"互联网+教育"战略.深化教育教学改革的背景下,建设智慧教室是学校创新教学环境.提升人才培养质量的必然选择[1].随着微课.MOOC等移动学习方式的兴起,将现代教育技术融入教 ...

  7. 图像识别开源_看看开源图像识别技术

    图像识别开源 去年在丹佛举行的超级计算会议上,我走进展览馆时发现了一个有趣的项目. 来自路易斯安那州立大学的一名博士生Shayan Shams建立了一个显示网络摄像头图像的大型监视器. 图像上是带有标 ...

  8. 计算机特点及应用领域阐述,计算机图像识别技术的应用及细节问题阐述与分析...

    摘 要文章首先简要阐述了计算机图像识别技术的特点及其发展现状,在此基础上对计算机图像识别技术的应用及细节问题进行了论述.期望通过本文的研究能够对促进计算机图像识别技术的发展及其在各个领域中的应用有所帮 ...

  9. 神经网络的图像识别技术,神经网络如何识别图像

    图像识别系统有几种方式?具体是什么? 图片识别的实现基础是由图像处理.计算机视觉和模糊识别等多学科实现的,现阶段市面上已经有很多像图普科技成熟大厂可以提供智能审核的软件. 在人工智能中,实现图像识别有 ...

最新文章

  1. 华工计算机考研上机,08华工计算机应用复试全过程_跨考网
  2. internetreadfile读取数据长度为0_Hadoop 读取数据
  3. openresty开发系列21--lua的模块
  4. MySQL在windows的my-default.ini配置
  5. Node.js nodemon
  6. java布类型的常量,java数据类型;常量与变量;
  7. 使用qume启动虚拟机的时候出现:“启动域时出错: Requested operation is not valid: network ‘default‘ is not active”
  8. 微信公众号页面开发经验总结
  9. 电影《冰川时代3》用Sun刀片服务器渲染
  10. 小胡时隔两年的第二篇Blog
  11. MySQL高级篇知识点——锁
  12. 如何在笔试的时候绕开切屏提示
  13. WatchOS开发教程之四: Watch与 iPhone的通信和数据共享
  14. 独立显卡 台式计算机,台式机独立显卡怎么切换
  15. 免费获取所有股票5分钟级别及以上的交易数据
  16. 极验验证--滑块验证
  17. 极进网络将收购斑马技术的无线局域网业务并获蓝筹客户
  18. C语言数据类型及其大小计算
  19. [前端笔记037]vue2之vuex
  20. 如何用正则化防止模型过拟合?

热门文章

  1. linux查看edid信息,EDID 信息
  2. outlook2007_Outlook 2007 Beta引入了自己的Feed URL协议。 w
  3. VBA 数组合并 和 用dict 去重数组
  4. SpringSecurity(一)整体概述
  5. 朗格手机android,铿锵玫瑰之朗格小爱手机
  6. games103,作业1(逻辑梳理)
  7. 计算机无法切换用户,Win10微软账户无法切换Administrator本地帐户的解决方法
  8. 华为交换机配置命令汇总
  9. dllimport和dllexport
  10. strongly-typed language(强类型语言)