aps网站服务建设,wordpress移动移动判断,网站备案流程是什么,廊坊网站建设企业Airtest工具根据App页面文字信息提取坐标进行截图保存在自定义文件夹
一、项目背景
在一个项目中#xff0c;选项被选中和未选中的节点元素的属性值无变化#xff0c;通过AI识别率达不到百分百#xff0c;想着通过计算图片的HSV值来判断选择能否被选中。#xff08;HSV比…Airtest工具根据App页面文字信息提取坐标进行截图保存在自定义文件夹
一、项目背景
在一个项目中选项被选中和未选中的节点元素的属性值无变化通过AI识别率达不到百分百想着通过计算图片的HSV值来判断选择能否被选中。HSV比较友好人更容易理解为啥不要RGB是因为颜色模型太复杂图片计算的RGB值不好判断颜色回到正题上来图片计算值时首先要扣出app选项的图片。看了网上好多资料知识点比较零碎我自己写了一个大体函数有小伙伴遇到通用问题后就可以自己将函数粘贴的自己项目中记住要带包。
二 、 解决思路及方法
airtest工具根据app页面信息提取坐标进行截图保存在自定义文件夹关键词app页面信息就是页面上的文字根据文字提取文字的坐标和尺寸计算出的坐标和尺寸是相当App整个页面长宽百分比需要获取整个页面的长宽通过百分比计算定位到左上和右下坐标通过坐标和尺寸计算出左上和右下的坐标值通过这两个坐标值进行截图并保存在自定义文件下。在python自动化测试中批量截图的文件命名以时间戳进行命名。直接上代码。 # -*- encodingutf8 -*-
__author__ Administratorfrom airtest.core.api import *
from airtest.aircv import *from airtest.core.api import *
from airtest.core.api import *
from airtest.aircv import *
from PIL import Imagefrom PIL import Imageauto_setup(__file__)from poco.drivers.android.uiautomation import AndroidUiautomationPoco
poco AndroidUiautomationPoco(use_airtest_inputTrue, screenshot_each_actionFalse)
# 刷脚本禁止写函数调用
screen G.DEVICE.snapshot()
# 局部截图# 获取屏幕尺寸
from poco.drivers.android.uiautomation import AndroidUiautomationPoco
android_poco AndroidUiautomationPoco(use_airtest_inputTrue, screenshot_each_actionFalse)
screen_with, screen_height android_poco.get_screen_size()
print(屏幕的宽度,screen_with,屏幕的长度, screen_height)def txt_zuo_biao_jie_tu(jiedian):print(len((jiedian)))for jiedian_i in range(len(jiedian)):print(开始计算)# 获取等级文本成色jiedian_txt jiedian[jiedian_i].child(android.view.View).get_text()print(jiedian_txt)# 获取元素节点jiedian_i_nod jiedian[jiedian_i].child(android.view.View)# 获取节点坐标print(jiedian_i_nod.get_position())print(jiedian_i_nod.get_size())size_0 jiedian_i_nod.get_size()position_0 jiedian_i_nod.get_position()# 获取节点尺寸除以2for i_0 in range(len(size_0)):size_0[i_0] size_0[i_0] / 2print(size_0)
# # 计算坐标list_jia []list_jian []for index_0, item_0 in enumerate(position_0):list_jia.append(item_0 size_0[index_0])print(list_jia)for index_0, item_0 in enumerate(position_0):list_jian.append(item_0 - size_0[index_0])print(list_jian)count 1# 获取屏幕的大小list_jian_0 []list_jia_0 []# 获取坐标后开始截图list_jian_0.append(list_jian[0]*screen_with)list_jian_0.append(list_jian[1]*screen_height)list_jia_0.append(list_jia[0]*screen_with)list_jia_0.append(list_jia[1]*screen_height)c_0 tuple(list_jian_0 list_jia_0)print(c_0)# 截取图片区域screen G.DEVICE.snapshot()# # 局部截图screen aircv.crop_image(screen,c_0)# 保存局部截图到指定文件夹中pil_image cv2_2_pil(screen)picture_name{}_{}.format(截图颜色判断, time.strftime(%Y%m%d%H%M%S))pil_image.save(G:/9月份pyqt项目/Airtest/代码/截图/untitled.air/{}.png.format(picture_name), quality99, optimizeTrue)return(成功)if __name__ __main__:jiedian poco(android.widget.FrameLayout).offspring(com.wuba.zhuanzhuan:id/fah).child(android.webkit.WebView).offspring(app).child(android.view.View).child(android.view.View).child(android.view.View)[5].child(android.view.View).child(android.view.View)[1].child(android.view.View)[0].offspring(android.widget.ListView).child(android.view.View)txt_zuo_biao_jie_tu(jiedian)思路值得参考代码写的比较乱大家可以作为参考以后再遇到类似的问题直接上代码。当然有不足之处多多包涵小伙伴就自己补充争取项目在最短时间内不烧脑细胞可以完活。