在appium中,如何通过匹配图片来进行断言?

embedded/2024/10/18 5:58:29/

在Appium中进行图片匹配断言,可以使用OpenCV来实现。以下是使用Appium和OpenCV进行图片匹配断言的示例代码。

首先,需要确保安装了必要的库:

pip install opencv-python-headless
pip install opencv-python
pip install numpy

然后,下面是一个示例代码,展示如何使用Appium和OpenCV进行图片匹配断言:

import cv2
import numpy as np
from appium import webdriver# 配置Appium服务器和设备
desired_caps = {'platformName': 'Android','platformVersion': '10','deviceName': 'Android Emulator','app': '<path_to_your_app>','automationName': 'UiAutomator2',
}# 启动Appium客户端
driver = webdriver.Remote('<http://localhost:4723/wd/hub>', desired_caps)def load_image(image_path):"""加载图片并转换为灰度图像"""image = cv2.imread(image_path, 0)if image is None:raise FileNotFoundError(f"Image file '{image_path}' not found.")return imagedef find_image_in_screenshot(screenshot_path, template_path, threshold=0.8):"""在屏幕截图中查找模板图片"""screenshot = load_image(screenshot_path)template = load_image(template_path)result = cv2.matchTemplate(screenshot, template, cv2.TM_CCOEFF_NORMED)min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)if max_val >= threshold:return True, max_locelse:return False, None# 获取屏幕截图
screenshot_path = 'screenshot.png'
driver.save_screenshot(screenshot_path)# 模板图片路径
template_path = 'template.png'# 进行图片匹配断言
is_found, location = find_image_in_screenshot(screenshot_path, template_path)if is_found:print(f"Template found at location: {location}")
else:print("Template not found in screenshot")# 关闭Appium客户端
driver.quit()

代码说明

  1. 加载图片load_image函数用于加载并转换图片为灰度图像。
  2. 查找模板图片find_image_in_screenshot函数在屏幕截图中查找模板图片。使用OpenCV的matchTemplate方法进行模板匹配,如果匹配度超过指定的阈值(默认0.8),则返回匹配的位置。
  3. 获取屏幕截图:通过driver.save_screenshot方法获取当前屏幕截图并保存为文件。
  4. 进行图片匹配断言:调用find_image_in_screenshot进行图片匹配,并根据结果进行断言。

通过上述代码,可以在Appium测试中使用图片匹配进行断言。请确保模板图片和屏幕截图的分辨率和比例一致,以提高匹配的准确性。


http://www.ppmy.cn/embedded/85653.html

相关文章

高级java每日一道面试题-2024年7月26日-JVM篇-JVM对Java原生锁做了哪些优化?

面试官: JVM对Java原生锁做了哪些优化? 我回答: 在Java高级面试中&#xff0c;关于JVM对Java原生锁的优化是一个重要的话题。JVM&#xff08;Java虚拟机&#xff09;为了提高多线程程序的性能和效率&#xff0c;对Java的原生锁&#xff08;如synchronized关键字和Lock接口&a…

loj2143组合题解

组合 求 ∑ i 0 ∞ C n k i k r \sum_{i0}^{\infty} C_{n k}^{i kr} ∑i0∞​Cnkikr​ 模 p p p 的值。 这道题题目非常的善良&#xff0c;直接把式子送给我们了&#xff0c;那我们直接开始推式子&#xff1a; ∑ i 0 ∞ C n k i k r ∑ i 0 ∞ ∑ j 0 w C w j C n…

视觉SLAM--回环检测

文章目录 创建字典相似度计算增加字典规模 回环检测的意义&#xff1a;可以使 后端位姿图得到一个 全局一致估计。 视觉SLAM的主流做法&#xff1a; 基于外观的回环检测方法&#xff0c;仅 根据两幅图像的相似性确定回环检测关系。这种方法&#xff0c;摆脱了累计误差&…

SAPUI5基础知识20 - 对话框和碎片(Dialogs and Fragments)

1. 背景 在 SAPUI5 中&#xff0c;Fragments 是一种轻量级的 UI 组件&#xff0c;类似于视图&#xff08;Views&#xff09;&#xff0c;但它们没有自己的控制器&#xff08;Controller&#xff09;。Fragments 通常用于定义可以在多个视图中重用的 UI 片段&#xff0c;从而提…

鸿蒙界面开发

界面开发 //构建 → 界面 build() {//行Row(){//列Column(){//文本 函数名(参数) 对象.方法名&#xff08;参数&#xff09; 枚举名.变量名Text(this.message).fontSize(40)//设置文本大小.fontWeight(FontWeight.Bold)//设置文本粗细.fontColor(#ff2152)//设置文本颜色}.widt…

VScode 修改 Markdown Preview Enhanced 字体以及大纲编号

修改字体和背景颜色 按快捷键 Ctrl , 打开设置&#xff0c;搜索 markdown-preview-enhanced.previewTheme&#xff0c;选择一个黑色主题的css&#xff0c;如 github-dark.css. 修改自动编号和背景颜色 背景颜色 按 F1 或者 Ctrl Shift P&#xff0c;输入 Customize CSS…

基于 HTML+ECharts 实现智慧销售数据可视化大屏(含源码)

智慧销售数据可视化大屏&#xff1a;基于 HTML 和 ECharts 的实现 在当今的商业环境中&#xff0c;销售数据的实时监控和分析对于企业的成功至关重要。通过数据可视化&#xff0c;销售团队可以更直观地理解销售趋势、客户行为和产品表现。本文将介绍如何利用 HTML 和 ECharts 实…

20240723opencv中的透视变换

文章目录 1.实验环境2.实验目的3.实验代码4.实验结果展示5.本实验拓展1.实验环境 pycharm + opencv3.4.1 2.实验目的 针对图像中斜视现象,我们采用透视变换法进行矫正,代码如下,有更好的方法欢迎各位大佬评论区留言。 3.实验代码 # @File: 14.5透视变换.py # @Author: …