Appium无法识别的一些图片元素,必须先通过图片找坐标,进而通过点击坐标解决问题。

1.先在terminer运行安装命令:

pip install robotframework-appiumlibrary

在目录:/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/AppiumLibrary/keywords  下的_element.py 添加以下方法(click_img)就好了。

2.代码如下:

# -*- coding: utf-8 -*-

from AppiumLibrary.locators import ElementFinder
from .keywordgroup import KeywordGroup
from robot.libraries.BuiltIn import BuiltIn
import ast
from unicodedata import normalize
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC,expected_conditions
from appium.webdriver.common.touch_action import TouchAction
from time import sleep
import aircv as ac
import cv2 as cv
import numpy as np def click_img(self,path):
"""
点击给定的目标截图 :param path: 目标图路径
:param confidence: 最低相似度 """
print("开始寻找目标图片")
driver = self._current_application()
sleep(2)
driver.save_screenshot('screen.png') #截屏手机
#x, y 获得手机d的宽高尺寸
phoneScreen_width, phoneScreen_height = driver.get_window_size()['width'] , driver.get_window_size()['height']
imsrc = ac.imread("screen.png")
# 截图的宽高
#print(imsrc.shape)
capPicture_width , capPicture_height = imsrc.shape[1],imsrc.shape[0]
imobj = ac.imread(path)
# confidencevalue=0.5 imgsrc=原始图像,imgobj=待查找的图片, 获取匹配图片在原始图片上的中心坐标点
match_result = ac.find_template(imsrc,imobj,rgb=True)
print(match_result)
if match_result != None :
x1, y1 = match_result['result'] #匹配图片在原始图片上的中心坐标点,也就是我们要找的点击点
#print(x1, y1)
position_x, position_y = int(phoneScreen_width/capPicture_width * x1),int(phoneScreen_height/capPicture_height * y1)
driver.tap([(position_x, position_y)])
name = path.split("/")[-1].split(".")[0]
print('点击 "%s" 坐标:-->(%s,%s)' %(name,position_x, position_y))
else:
print("识别不到要点击目标图片")

经过实际测试,识别误差太大了,有待优化。

参考: https://www.cnblogs.com/meitian/p/7417582.html

自定义Robotframework,Appium的一个关键字(用于点击目标图片,用于Appium无法识别的一些图片元素)的更多相关文章

  1. RobotFramework自动化2-自定义关键字【转载】

    本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/robotframework/ 前言 有时候一个页面上有多个对象需要操作,如果一个个去定 ...

  2. Appium+Robotframework实现Android应用的自动化测试-2:Windows中启动Appium和模拟器

    一.启动Appium 安装好了之后,在桌面或者菜单中找到Appium,分别双击或点击打开Appium.exe,如果一切正常,接着会出现一个Appium启动后的界面窗口,如下图所示. 1.1 Andro ...

  3. Android高级控件(六)——自定义ListView高仿一个QQ可拖拽列表的实现

    Android高级控件(六)--自定义ListView高仿一个QQ可拖拽列表的实现 我们做一些好友列表或者商品列表的时候,居多的需求可能就是需要列表拖拽了,而我们选择了ListView,也是因为使用L ...

  4. oracle 实现多字段匹配一个关键字查询语句

    oracle 实现多字段匹配一个关键字查询语句:有两种方法(经测试,10g中不能用,11g才行): 第一种. select * from table where ('字段名1' ||'字段名2' || ...

  5. RobotFramework自动化测试框架系统关键字之断言

    一.基础 RobotFramework带有丰富的系统关键,使用时无需导入,直接使用,为写自动化用例带来了极大的方便:不能停留在知道或者是会得程度,只有熟练使用各关键字,才能提升自动化用例的写作效率.下 ...

  6. appium +python 一个简单的例子

    appium 安装和python 安装好后. 1.      启动android模拟器--Genymotion-点击Start 2.      启动appium 3.     运行代码. # -*- ...

  7. Appium+python自动化(三十五)- 命令启动appium之 appium服务命令行参数(超详解)

    简介 前边介绍的都是通过按钮点击启动按钮来启动appium服务,有的小伙伴或者童鞋们乍一听可能不信,或者会问如何通过命令行启动appium服务呢?且听宏哥一一道来. 一睹为快 其实相当的简单,不看不知 ...

  8. Appium+python自动化55-appium desktop每次启动安装Unlock和Appium Setting问题

    前言 部分真机可能会出现每次运行代码,启动app之前都会重复安装Unlock和Appium Setting这两个小工具,有的手机会自动安装,这个还好. 有的手机每次都会弹出一个安装确认框(如部分小米和 ...

  9. 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)

    在开发中,经常用到选择多张图片进行上传或作其他处理等等,以下DEMO满足了此功能中的大部分功能,可直接使用到项目中. 主要功能如下: 1,图片九宫格排列(可自动设置) 2,图片长按抖动(仿苹果软件删除 ...

随机推荐

  1. Jmeter接口测试,变量是订单和订单明细,怎么一起传?

    ", "price": 12.0, "orderDate": "2019-07-05 10:40:00", "order ...

  2. Go语言调度器之调度main goroutine(14)

    本文是<Go语言调度器源代码情景分析>系列的第14篇,也是第二章的第4小节. 上一节我们通过分析main goroutine的创建详细讨论了goroutine的创建及初始化流程,这一节我们 ...

  3. Vs2012帮助文档安装介绍

    Vs2012的帮助文档:Microsoft Help Viewer.exe,vs2010对应的是1.0,vs2012对应的是2.0,版本号以此类推 与早期的chm格式的msdn帮助文档不同在于: 1. ...

  4. 【oracle】update select语句

  5. [LeetCode] 436. Find Right Interval 找右区间

    Given a set of intervals, for each of the interval i, check if there exists an interval j whose star ...

  6. Casbin权限模型

    权限框架casbin1.概述Casbin是一个强大的.高效的开源访问控制框架,其权限管理机制支持多种访问控制模型. Casbin支持以下编程语言: Casbin可以做到:支持自定义请求的格式,默认的请 ...

  7. python与rpc服务

    什么是rpc 随着企业 IT 服务的不断发展,单台服务器逐渐无法承受用户日益增长的请求压力时,就需要多台服务器联合起来构成「服务集群」共同对外提供服务. 同时业务服务会随着产品需求的增多越来越肿,架构 ...

  8. 热情组——项目冲刺 Day3

    项目相关 作业相关 具体描述 班级 班级链接 作业要求 链接地址 团队名称 热情组 作业目标 实现软件制作,以及在福大的传播 Github链接 链接地址 SCRUM部分: 成员昵称 昨日目标 开始时间 ...

  9. 在 Vue 中使用 装饰器 Decorator

    Decorator 的语法还没有通过提案,所以项目中很少用.不过最近刚好有一个需求用到了. 装饰器的语法 http://es6.ruanyifeng.com/#docs/decorator 需求是,有 ...

  10. 第四次实验报告:使用Packet Tracer理解RIP路由协议

    目录 1 实验目的 2 实验内容 3. 实验报告 3.1 建立网络拓扑结构 3.2 配置参数 3.3 测试网络连通性 3.4 理解RIP路由表建立和更新 4. 理解RIP消息传得慢 5. 拓展 1 实 ...