不管原因,你直接执行 js 语句,将这个元素的状态改一下,最后效果还是看程序咋实现的
你使用 uiautomator 碰到的问题,是因为没有设置滑动方向吧,默认是上下的,你要左右,要设置下
第一种,纯原生 API
public UiObject findObjectInListView(String ListViewType, String ListViewValue, String text){
/**
* 定位元素,从列表中找到指定文本的元素对象
*/
UiScrollable list =findListViewObject(ListViewType,ListViewValue);
list.setMaxSearchSwipes(20);
UiObject target=null;
try {
target = list.getChildByText(new UiSelector().className("android.widget.TextView"),text,true);
} catch (UiObjectNotFoundException e) {
e.printStackTrace();
FailedCase.interruptProcess(String.format("UiObjectNotFoundException with value:%s",text));
}
return target;
}
要求 App 本身翻页做的比较顺滑,就是预加载功能靠谱,不然容易中断,框架认为列表到底了,不再查找了,你还没加载出来新数据呢
第二种,翻页使用另一个 api 替代
UiScrollable list =findListViewObject(ListViewType,ListViewValue);
list.scrollForward(20);
剩下的就只是查找当前页面元素就可以了
一看就知道你用的不是 uiautomator 2.0 框架,谁用都说好,你的这些问题都不是问题,都有现成 api
iOS 没这问题吧。
Android 6.0 以上,需要开发支持下,然后也可以正常抓取
那只能哈哈了
对这个结果页面的前置后置也很感兴趣,这个是通过用例前后调用其他用例来实现,还是说单独定义了一些方法类型,来判定为前置还是后置?
我在美团的时候也有人做过类似的平台,但比这个功能少一些,但只限制于处理 server 端相关,有计划接入前端自动化相关吗
对这个自动登录的兼容情况比较好奇啊,我目前碰到的不同的项目的用户登录状态的判断相差还是挺大的,你这边是怎么统一做到的?
我碰到过需要将状态信息放到 header 里面的,放到 cookie 的,还有直接放到 body 里面的
面太大了,建议先具体方向,是端上(iOS,Android,Web)还是服务,是单接口层级还是服务器整体
有时候是这样的,但这问题不大,因为什么呢,因为数据源只要比较充分的话,后续只是使用的问题,例如哈,一个自动化用例,需要明确什么:
用例名称 - 内部标示,方面快速查找代码
描述 - 这个用例干什么的
结果 - 成功或失败
原因 - 失败/成功日志
执行载体型号 - 是 iOS/Android 什么设备
模块 - 属于那个测试模块
截图/录屏 - 直观检查错误具体原因
失败原因分类 - 提前整理好可能的失败原因(这个也可以放到平台展示页面去灵活修改)
执行时间长度 - 用例消费时间
执行触发时间 - 什么时候执行的,方便回溯时间段内服务器是否正常
有了这些,基本上后期能整理出来任何想要的数据,对吧。
不可能说,后期老大突然说,我想要一个和用例本身八竿子打不着的东西,就算要,你想加也不一定加的了不是
啊,你这个问题回归需求了,其实不是难点,明确好就行了,找个有经验的测试人员/管理,应该都知道自己想要什么
感觉本身就是一个伪命题。
哪有一个 page 的初始化方法是调用其他 page 类的方法的。
没太明白你的意思。
尝试理解下,是意思每个平台可能对于结果的展示维度和样式不一样吗?
首先,结果展示都是和各个平台测试沟通的(这里其实都是我自己,不存在沟通障碍),需要展示什么数据,都会要求上报上来,目前我做的是,前端自动化展示页面基本一致,所以共用一套页面来展示,接口单独一套页面,如果说,哪天 iOS 需要个性化展示一些东西,可能就会单独写一套页面出来给 iOS 用。
基本上来说,这个后台趋向于网站开发,展示什么,什么方式展示,产品方是测试人员罢了
直接验证需要验证的页面,目前我是这么做的:
1、登录直接通过接口登录,然后插入 cookie
2、通过接口获取打开指定的页面,需要的值,例如打开的页面需要 2 个参数,值需要从前一个页面获取,那就再前面一个页面的接口中获取到这 2 个数据,直接提供给目标页面打开使用。
iOS 自动化很多东西需要自己框架的时候去优化的,你的这个,其实很好解决:
1.判断 is_enabled,有时候,元素是获取到了,但是不可点击的状态,你这时候去 click 是不响应的,用 tap,因为是直接点击的屏幕坐标点,所以生效了。如果只是暂时的 unabled,稍加等待,后续是可以点击的。
2.然后,还有控件的显示情况,都需要自己去判断然后处理,脚本才会稳定强大
问个小白问题,压测做的少,使用 Jmeter 的话,单台机器,性能一般的话,压测几千机器就很吃力了,脚本写压测的话,单台机器差不多能模拟到多少并发呢?
问题已解决,目前是安装双 Xcode 的方式解决的,蛋疼的是 Appium 公司网络现在更新不了~
绝对支撑了 2 个平台的自动化搭建~
感谢分享!
Android SDK 的 Uiautomatorviewer 不比这个又快又好?
报错 OOM 是 App 导致还是脚本导致?
@niuniudd ,思路有了,但实际转换成可以公司推广用的,还有很多路啊
@seveniruby 只是上传了一个思路,要是真做好,优化的地方太多了,很多逻辑都要考虑,目前实际运行中还是不顺畅;
元素就是通过 JSON 数据维护的,一个页面的元素通过简单合并作为该页面 Activity 的 Key 的值
@marker 我只是输入英文和数字,因为我们对中文要求不高,也没有做过多的这方面的探索