你的【ID】呢

写在前面

本文讲述的是【如何给动态生成的控件添加id】,像那种直接在xml配置id的高级操作,我是介绍不来的,请见谅。不需要前戏的朋友,请直接查看第四点

一、背景

自从公司使用【appium】做自动化测试以后,别提测试组的同事有多高兴了,给人一种【妈妈再也不用担心我按坏公司的设备,赔不起钱了】的既视感。(ps:公司的设备是以 W 为单位的)

1、简单介绍自动化测试

appium】简单来说就是一个自动化测试的工具,和其他自动化测试工具操作流程一致:
(1)根据控件id或者text等属性来定位到控件
(2)然后模拟触发一些点击,滑动等事件
(3)根据预期的结果和实际的结果做比较,得出结论

二、翻车现场

在了解了自动化测试的基本流程后,就知道自动化测试前题是【定位到具体的控件】,因此我需要给所有的控件【添加对应的id】。在一顿猛如虎的操作后,排查了所有没带id的控件后,我把打包好apk(没问题.apk)给测试组同事做测试,并说道【可以了,有问题过来找我,不过应该没什么问题的】。

····陷入摸鱼状态中,无法自拔····

老哥,你的这个控件没有id呢】猛的把我从鱼塘中拉回来,心里碎碎念道“我那才吃过一口的老干妈怎么还没人购买,这还是99新的呢”。

不应该啊,我刚刚都排查了一遍,我看看】。又是一波疯狂输出后,纳尼,居然是[onClick]的锅,原来是某些[Button],当初设置点击事件时,采用的【在xml文件添加onClick属性的方法,怪不得没有id,我还能在界面上点击

问题不大,马上就好】于是我又排查了一遍带onClick的button后,把第二个apk(绝对没问题.apk)发了他,并写到【这次改完后绝对没问题了,有问题你也别来找我了,我去找你吧

····我那喝过一口的冰阔乐怎么还没人买,才0.5元啊,咸鱼真不好做····

“咳咳咳…电脑OA传来一阵通知声音”,是刚刚的测试同事发来的信息【过来

?????!!!!!!
就两个字,什么时候测试的朋友也这么大架子了!!!!!
不就平时写的bug有点多,让你们跟着加班十几次而已!!!!
起身过去,手上默默拿起“50cm长的戒尺”(这把尺子说来话长,不为人知的1cm,一把辛酸泪,有机会再描述)

我:【请问有什么问题?】(你们以为我会态度不好,不可能的,我是经过专业素养培训的,一般都会礼貌待人,不会爆粗,除非真的忍不住)
测试:【这里有一排的按钮没有id】
我:【一排?不可能吧,我看看】
测试:【把界面截图,以及对应的控件详细属性界面显示给我看】
我:【我c,真的没有,还是一排。那这个应该是列表控件,列表控件的每一个item都是没有id的,这是正常的】
测试:【不是吧,最外层这个是LinearLayout,又不是RecyclerView或者ListView,你别坑我】
我:【我c,现在的测试,对android基础知识掌握这么熟的吗?是想抢饭碗吗?心里是这么想着,嘴上只能说者**‘额,那我回去看看吧’**】

三、分析处理问题

1、缺少id的原因

放下戒尺,乖乖地去到指定界面的xml布局,查看,发现真的是LinearLayouer,但是并没有看到里面有嵌套什么Button,textView,ImageView之类的控件。然后跳转到指定.java文件,发现是通过new Button(context),然后addView到LinearLayout上面的,我滴乖乖

2、解决缺少id的问题

(1)我想将这些动态添加的button,通过xml布局的方式,移动到LinearLayout的标签下面,并且给这些button添加id。但想法是好的,现实是残忍的,项目中之所以用动态添加的方式,就是因为【这些按钮是需要根据xml配置文件进行配置的,说白了,就是这些按钮是根据xml的不同,动态变化的】(ps:通过xml配置,动态生成按钮的思路,下次有机会再解释)

(2)既然无法通过xml布局文件的方式来处理,就只能给每个按钮动态添加id了。通过api文档,发现有一个setId的方法,里面传入一个int类型的参数,但是这个id从哪里来呢,随便输入1.2,3,4吗?好像随意了点。根据平时的用法,id都是R.id.xxx这种形式的,并以此类推R.color.xxx,R.string.xxx,R.drawable.xxx等,得到以下三部曲(这个三部曲是不是来的有点容易了??)

四、简单三部曲

1、单独创建id类型的资源文件

res目录结构,添加了ids.xml文件

2、自定义id值

ids.xml文件中的内容

3、使用自定义的id值

可以通过R.id.xxx访问自定义的id

需要注意的是,第一点不是必须的。自定义的id值,你可以定义在string.xml,或者是color.xml 文件中。我之所以单独创建ids.xml文件,仅仅是为了资源分类合理,养成良好的编码习惯,不被同事喷,不被上司怼,赏心悦目等等等等。

五、结束语

我把最后打包的apk(有问题你砍我.apk)发给了测试同事,并顺道留下一句话【给我往死里测】,然后默默把OA,QQ,微信下线了。

下班钟声响起,【这一天,终究是愉悦的,我的努力也得到了回报,我的老干妈和冰阔乐顺利被一个抠脚大汉给回收了,感谢!!!】

至于测试还有没有问题,那是明天的事了,再见!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值