博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[BUG]自己的bug自己解,记一次在变量使用过程引发的bug
阅读量:5010 次
发布时间:2019-06-12

本文共 1904 字,大约阅读时间需要 6 分钟。

【实现的功能要求】在短信编辑界面,将所有的emoji表情全部插入到编辑区域,其中表情共有5页,每遍历完一页时需要自动翻页重新获取表情并插入,在第5页中只有10个表情

下面先看看这段代码,大家能否看出有什么问题?

1 #-*- coding:utf-8 -*- 2 ''' 3 Created on 2018年7月30日 4  5 @author: anyd 6 ''' 7 from uiautomator import device as d 8  9 radiobutton = d(className = 'android.widget.RadioButton').count # 获取所有表情的页数10 emoji_number = d(resourceId ='com.android.mms:id/iv_emoticon_icon').count # 获取每页表情的数量11 for i in range(radiobutton):12     for j in range(emoji_number):13         #将每页的表情一个一个的插入到编辑区域14         d(resourceId = 'com.android.mms:id/iv_emoticon_icon',instance = j).click()15     i += 116     #如果表情未到最后一页时,需要翻页17     if i < radiobutton:18         d(resourceId = 'com.android.mms:id/iv_emoticon_icon').swipe.left(steps=5)19     #表情到最后一页了,提示完成20     else:21         print 'done'

上面这段代码再执行到添加第5页的表情时会报错,通过再第11行和12行之间添加 print emoji_numer时,发现每页的表情数量都是21个,但实际情况是在第5页时只有10个表情,代码运行与实际的不符,明显是哪里有问题,我们再看看这个获取表情数量是在哪里就开始定义了,在最前面读到第1页的表情数量就被赋值进去了,所以导致第12行的 for 循环时它只会用前面已定义好的变量值,我们要实现的是再每一页时要去重新读取表情数量(因为每一页的表情数量不统一),然后重新赋值进变量中供后面使用,修改代码如下,将第10行的获取表情数量代码移到第11行和12行之间,修改如下:

1 #-*- coding:utf-8 -*- 2 ''' 3 Created on 2018年7月30日 4  5 @author: anyd 6 ''' 7 from uiautomator import device as d 8  9 radiobutton = d(className = 'android.widget.RadioButton').count # 获取所有表情的页数10 for i in range(radiobutton):11     emoji_number = d(resourceId ='com.android.mms:id/iv_emoticon_icon').count # 获取每页表情的数量12     for j in range(emoji_number):13         #将每页的表情一个一个的插入到编辑区域14         d(resourceId = 'com.android.mms:id/iv_emoticon_icon',instance = j).click()15     i += 116     #如果表情未到最后一页时,需要翻页17     if i < radiobutton:18         d(resourceId = 'com.android.mms:id/iv_emoticon_icon').swipe.left(steps=5)19     #表情到最后一页了,提示完成20     else:21         print 'done'

再次运行后,表现正常,与预期相符。

 

总结:如果在程序中使用到的变量对应的赋值不是唯一(可变),那一定不能在程序最前面就定义,否则后面的坑还是得自己去填,涉及到的赋值可变时,在对应的变量中随用随赋(在需要使用时再去重新赋值,如上面的例子)

转载于:https://www.cnblogs.com/TwCsLj/p/9391958.html

你可能感兴趣的文章
uoj176 新年的繁荣
查看>>
[ZJOI2007]矩阵游戏
查看>>
单纯形法
查看>>
SQL中的replace函数
查看>>
java中的类型安全问题-Type safety: Unchecked cast from Object to ...
查看>>
翻译的一篇关于VBO的文章
查看>>
数据结构之表(C语言实现)
查看>>
php单例模式
查看>>
安卓开发第一天小结
查看>>
android GUI 流程记录
查看>>
C# 修饰符
查看>>
负载均衡介绍
查看>>
海贼王之——梦想音乐
查看>>
Windows Azure Cloud Service (18) 基于Input Endpoint通过Worker Role发布WCF服务
查看>>
如何解决最后一个尾注引用显示与致谢混为一谈的问题-下
查看>>
Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
查看>>
阅读之https及加密原理
查看>>
HDOJ4550 卡片游戏 随便销毁内存的代价就是wa//string类的一些用法
查看>>
bzoj3875 [Ahoi2014&Jsoi2014]骑士游戏
查看>>
转载-稳定排序和不稳定排序
查看>>