首先,需要先排除数据上下游强关联的用例
直接转成数据驱动、或者每行操作单独执行,(先 str 化,然后 exec(str))
1、单步骤执行失败后,sleep(1),后重试一次
2、上下游相关的 case 放一个测试流程,部分节点做校验,不符合就退出流程
3、自动对失败的流程重试(如果是网络问题引起的,这步可以修复,一般重试 1-2 次)
直接用 wda,拒绝中间商..
安卓用的 driver.swipe_points([coordinates1,coordinates2,coordinates3], 0.2)
coordinates1=(x1,y1)
我的安卓是基于 uiautomator2,不过这个方法在 appium 也有(但是好像 ios 不支持)
我的 ios 是基于 wda,直接使用 http 通信
wda_url = f"http://localhost:8100/session/session_id}/actions{"
构建请求数据 相关文档https://github.com/jlipps/simple-wd-spec#perform-actions
写 UI 自动化的时候,兼容一下多语言就可以了
1、页面点击时主要以 text 为主
2、对每个页面的 text 进行 exists 校验
3、执行多语言时,提取 case/代码中的 text,替换成对应的多语言
然后正常执行 ui 自动化
你的要定位的东西在列表上吧,新版在列表上从头找到尾,基本上都在屏幕外。
我自己的重构了,
1、优先 driver(text='模式', visible=True) 快捷指定 visible=True 找到显示区域的,但是新版这个 visible=True 可能不准 (部分 True 的可能返回 False)
2、1 找不到,再去循环查询 driver(text='模式')
element=driver(text='模式')
elementcount = element.count()
for i in range(1, elementcount + 1):
if element[i].visible:
print(str(i) + '个时是显示的')
break