#9 楼 @lihuazhang 很期待!
代码的设计思路比较正统,体现了抽象和工厂的灵活性,作为同行先点个赞。
我的疑问是,UI 自动化设计成单例模式比较好,即便是分布式执行不同浏览器或 os 的脚本,每个执行机跑一个单例也比较稳定。
MainRunner 放在线程里面我有点不解,相互讨论也是成长的过程,所以想听听你的设计初衷和思路
流程管理和技术相互配合,根据接口代码生成接口文档,接口文档生成接口用例,比较好的实践。
mock server 目的验证调用方的代码,单测阶段比较合适吧,个人观点
jmeter 做接口测试,刚入行练手可以,做深了感觉是个二不像
#11 楼 @azdbaaaaaa 没遇到过,静态页面采集频率设计好,如果是动态页面,用 ajax 刷新填充
#8 楼 @azdbaaaaaa 采集的场景可以是基于业务的自动化案例,也可以是基于规则的自动化遍历工具,两方面都要支持吧
我最近也是做这个,ios 的确实蛋疼,你有好的解决方案也可以拿出来分享
#92 楼 @seveniruby 参考了几款 app,defineUrl 可能不能解决一些特殊情况,例如:有的窗口有 title,有的窗口没有 title,有的窗口 title、tab 完全一样,选择不同 tab 的内容不一样,有的 app 窗口内控件的命名规则太随意,很难用一个 defineUrl 适配所有窗口,可能还有许多未知的情况。
今天总结后又想到一个方法,以 android 为例:按顺序解析 xml 所有节点,但只取除坐标之外的属性和 text 拼接成字符串,默认取前面 30 个节点的内容(用户通过配置自定义)生成 md5,觉得这样的通用性和辨识率会大大提高
#103 楼 @seveniruby 任务催的紧,两星期没睡好觉,马不停蹄的摸索,踩坑,填坑,今天算是稳定版交差了,接下来是核心算法的优化了,你的文章给了我启发,少走了弯路
#100 楼 @seveniruby 我现在跑的挺稳定的,唯一的遗憾是这个问题没彻底解决,导致部分窗口的任务可能重复跑影响效率
#99 楼 @seveniruby 看样子,你也踩了不少坑
#92 楼 @seveniruby 我又想到一个方法,判断窗口是否迁移,待会实验一把
把操作前、操作后的两个窗口文件按顺序解析出可执行节点,每个节点用 xpath 的绝对路径做唯一标识,保存在两个集合,然后进行差异性比较。举个例子:如果差异率小于 10%(按实际情况自己配置),则认为是 同一窗口下的任务,去重后合并成一个新的任务栈
#95 楼 @seveniruby 公司邮箱不能访问外网,个人邮箱:quqing0930@126.com
做类似于 Monkey 的无序操作,用 element.getLocation() 和 element.getSize() 得到控件坐标,自动点击
做有序的自动遍历,比较有挑战,可研究下基于深度的探索性遍历再做
#16 楼 @qi_ling2005 嗯,很好
#91 楼 @seveniruby 刚才试验了下任务栈黑名单机制和任务栈自动重置的策略,现在对窗口迁移和跳窗的判断依赖小了很多,稳定性显著提高了
ios 的跳窗处理更蛋疼了,感觉 defineUrl 还是指标不治本,还是我理解的有问题。。。
#90 楼 @seveniruby 关于窗口迁移,用 activity 不行,很多 tab 窗口内容不一样,同属一个 activity
用 md5 也不靠谱,页面有细微的变化就变了,窗口迁移处理和跳窗处理你有好的解决方案吗?
#6 楼 @seveniruby 我设计的可能不太一样,每个被操作对象的唯一标识用窗口 MD5-节点 class-xpath 组合标识,所以每个 node 的 xpath 在当前窗口是唯一的,奇怪的是 android 界面 dump 下来有上述情况,另,有好的设计建议也可供我参考下
#3 楼 @seveniruby 再请教个问题,获取 Android 的界面的 xml,节点的 node name 有时候是控件类名,和 iOS 一致
有时候 node name 都是 node
为了求稳定,只能写两套方法,你有没有遇到这种情况?
#3 楼 @seveniruby 之前以为是生成的图片,我想多了,谢谢
#87 楼 @seveniruby 登录时的手势密码,如何处理