自动化测试
一、特点
airtest识别图片可以,但是文字不太行
poco识别文字比较好
所以结合使用
二、方法使用技巧
看的见的文字:poco(text="")
页面中存在多个相同的文本:poco(text="")[2],选取第三次出现的元素
文字模糊匹配:poco(textMatches="xxx.*")/poco(textMatches=".*xxx*.")
图片:Template(r"xx.png", record_pos=(0.001, -0.243), resolution=(1080, 1920)),第一个参数图片文件,第二个是录制位置,第三个是录制的分辨率
注意:poco的相对选择不太好使,强烈建议优先使用text,其次是空间选择[]
断言:assert_equal(poco(text="xx").exists(), True, "执行失败")
单条测试报告:必须用这种方式,否则不生成html的截图
if not cli_setup(): auto_setup(__file__, logdir=log_file_path, devices=[ "Android://127.0.0.1:5037/SJE5T17927004209?cap_method=JAVACAP" ]) simple_report(__file__, logpath=log_file_path, output=log_file_path + "/log.html")
聚合报告:结合unittest批量执行,使用BeautifulReport生成
三、公共
解决等待时间问题:每次需要等待元素出现,然后操作,重写操作方法如click(),添加等待元素出现的方法即可
wait(v,timeout=None,interval=0.5,intervalfunc=None)
参数: |
|
---|
滚动屏幕查找元素
滚动查找元素,当找到元素后,滑动元素到页面中间。 用法:poco_swipe_to(text=None, textMatches=None, poco=None) # 滚动查找元素 def poco_swipe_to(text=None, textMatches=None, poco=None): find_ele = False find_element = None if poco is None: raise Exception("poco is None") if text or textMatches: swipe_time = 0 snapshot(msg="开始滚动查找目标元素") if text: find_element = poco(text=text) elif textMatches: find_element = poco(textMatches=textMatches) while True: snapshot(msg="找到目标元素结果: " + str(find_element.exists())) if find_element.exists(): # 将元素滚动到屏幕中间 position1 = find_element.get_position() x, y = position1 if y < 0.5: # 元素在上半页面,向下滑动到中间 poco.swipe([0.5, 0.5], [0.5, 0.5+(0.5-y)], duration=2.0) else: poco.swipe([0.5, 0.5], [0.5, 0.5-(y-0.5)], duration=2.0) snapshot(msg="滑动元素到页面中间: " + str(text) + str(textMatches) ) find_ele = True break elif swipe_time < 30: poco.swipe([0.5, 0.8], [0.5, 0.4], duration=2.0) # poco.swipe((50, 800), (50, 200), duration=500) swipe_time = swipe_time + 1 else: break return find_ele 引用:https://blog.csdn.net/u011608531/article/details/105283799/
selenium:
模糊匹配连接中的文本:find_element_by_partial_link_text()
模糊匹配任意文本:find_element_by_xpath("//a[contains(text(),'文本')]").get_attribute('href')