[BUG]自己的bug自己解,记一次在变量使用过程引发的bug
【实现的功能要求】在短信编辑界面,将所有的emoji表情全部插入到编辑区域,其中表情共有5页,每遍历完一页时需要自动翻页重新获取表情并插入,在第5页中只有10个表情
下面先看看这段代码,大家能否看出有什么问题?
#-*- coding:utf-8 -*-
'''
Created on 2018年7月30日 @author: anyd
'''
from uiautomator import device as d radiobutton = d(className = 'android.widget.RadioButton').count # 获取所有表情的页数
emoji_number = d(resourceId ='com.android.mms:id/iv_emoticon_icon').count # 获取每页表情的数量
for i in range(radiobutton):
for j in range(emoji_number):
#将每页的表情一个一个的插入到编辑区域
d(resourceId = 'com.android.mms:id/iv_emoticon_icon',instance = j).click()
i += 1
#如果表情未到最后一页时,需要翻页
if i < radiobutton:
d(resourceId = 'com.android.mms:id/iv_emoticon_icon').swipe.left(steps=5)
#表情到最后一页了,提示完成
else:
print 'done'
上面这段代码再执行到添加第5页的表情时会报错,通过再第11行和12行之间添加 print emoji_numer时,发现每页的表情数量都是21个,但实际情况是在第5页时只有10个表情,代码运行与实际的不符,明显是哪里有问题,我们再看看这个获取表情数量是在哪里就开始定义了,在最前面读到第1页的表情数量就被赋值进去了,所以导致第12行的 for 循环时它只会用前面已定义好的变量值,我们要实现的是再每一页时要去重新读取表情数量(因为每一页的表情数量不统一),然后重新赋值进变量中供后面使用,修改代码如下,将第10行的获取表情数量代码移到第11行和12行之间,修改如下:
#-*- coding:utf-8 -*-
'''
Created on 2018年7月30日 @author: anyd
'''
from uiautomator import device as d radiobutton = d(className = 'android.widget.RadioButton').count # 获取所有表情的页数
for i in range(radiobutton):
emoji_number = d(resourceId ='com.android.mms:id/iv_emoticon_icon').count # 获取每页表情的数量
for j in range(emoji_number):
#将每页的表情一个一个的插入到编辑区域
d(resourceId = 'com.android.mms:id/iv_emoticon_icon',instance = j).click()
i += 1
#如果表情未到最后一页时,需要翻页
if i < radiobutton:
d(resourceId = 'com.android.mms:id/iv_emoticon_icon').swipe.left(steps=5)
#表情到最后一页了,提示完成
else:
print 'done'
再次运行后,表现正常,与预期相符。
总结:如果在程序中使用到的变量对应的赋值不是唯一(可变),那一定不能在程序最前面就定义,否则后面的坑还是得自己去填,涉及到的赋值可变时,在对应的变量中随用随赋(在需要使用时再去重新赋值,如上面的例子)
[BUG]自己的bug自己解,记一次在变量使用过程引发的bug的更多相关文章
- 记一次亲身踩过的hibernate的bug
记一次亲身踩过的hibernate的bug 在写实体类时,经常会对域增加校验,例如@NotNull表示哪个字段不能为空,昨天晚上调试代码,就遇到了问题, @Entity public class Ap ...
- 记Windows的一个存在了十多年的bug
bug Windows有一个bug,持续了十多年,从Windows Visita开始(2007年),一直存在,直到Windows11(2021年)才修复(其实也不叫修复,后面我再具体说),而Windo ...
- 一次关于使用status作为变量引发的bug及思考
这个bug出现在一年前,当时自己大学还没毕业,刚刚进入一家公司实习.那个时候还没有用seajs或者requirejs那样的模块化管理的库,也没有用一个自执行的函数将要执行的代码包裹起来,于是bug就在 ...
- Spring 循环引用(一)一个循环依赖引发的 BUG
Spring 循环引用(一)一个循环依赖引发的 BUG Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 循环 ...
- 【转】C 编译器优化过程中的 Bug
C 编译器优化过程中的 Bug 一个朋友向我指出一个最近他们发现的 GCC 编译器优化过程(加上 -O3 选项)里的 bug,导致他们的产品出现非常诡异的行为.这使我想起以前见过的一个 GCC bug ...
- 安卓微信overflow-x overflow-y引发的bug
今天xgo文章图片页上线用微信扫页面发现一个bug,页面可以双击放大缩小. 找了半天原因,发现是图片描述设置了overflow-y引发的bug. 建议在微信场景里满屏显示不能滚动的页面里慎用overf ...
- QByteArray引发的bug
QByteArray引发的bug 在接收UDP数据的函数里,有如下代码片段 if(0x10 == data.size() && 0xCA == (unsigned char)data. ...
- 一个排序引发的BUG
你好呀,我是why. 前两天在 Git 上闲逛的时候又不知不觉逛到 Dubbo 那里去了. 看了一下最近一个月的数据,社区活跃度还是很高的: 然后看了一下最新的 issue,大家提问都很积极. 其中看 ...
- 记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?)
记一次数据库调优过程(IIS发过来SQLSERVER 的FETCH API_CURSOR语句是神马?) 前几天帮客户优化一个数据库,那个数据库的大小是6G 这麽小的数据库按道理不会有太大的性能问题的, ...
随机推荐
- 深入出不来nodejs源码-流程总览
花了差不多两周时间过了下primer C++5th,完成了<C++从入门到精通>.(手动滑稽) 这两天看了下node源码的一些入口方法,其实还是比较懵逼的,语法倒不是难点,主要是大量的宏造 ...
- 判断ArryaList有没有重复对象的方法
ArrayList类是List类下一种常用的子类,如果要判断容器里面的对象是否有相等,有两种方法. 下面是自定义的一个Student类,假设容器里重复是按照对象的两个属性都相等. /** * @aut ...
- JAVA设计模式详解(二)----------观察者模式
有一个模式可以帮助你的对象知悉现况,不会错过该对象感兴趣的事,对象甚至在运行时可以决定是否要继续被通知,如果一个对象状态的改变需要通知很多对这个对象关注的一系列对象,就可以使用观察者模式 .观察者模式 ...
- linux_shell_字符串
字符串是shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号. 但是单引号和双引号是有区别的: 单引号: 单引号里的任何 ...
- Code Signal_练习题_arrayMaxConsecutiveSum
Given array of integers, find the maximal possible sum of some of its k consecutive elements. Exampl ...
- PHP实现大转盘抽奖算法
流程: 1.拼装奖项数组,2.计算概率,3.返回中奖情况 代码如下:中奖概率 ' v ' 可以在后台设置,传到此方法中,注意传整数 function get_gift(){ //拼装奖项数组 // 奖 ...
- CSS 水平居中和垂直居中
1.水平居中——行内元素 text-align: center; 2.水平居中——定宽块状元素 margin: auto,满足定宽和块状两个条件的元素是可以通过设置“左右margin”值为“auto” ...
- scikit-learn画ROC图
1.使用sklearn库和matplotlib.pyplot库 import sklearn import matplotlib.pyplot as plt 2.准备绘图函数的传入参数1.预测的概率值 ...
- bzoj P5016[Snoi2017]一个简单的询问——solution
Description 给你一个长度为N的序列ai,1≤i≤N和q组询问,每组询问读入l1,r1,l2,r2,需输出 get(l,r,x)表示计算区间[l,r]中,数字x出现了多少次. Input ...
- 一台电脑配置多个tomcat过程
方法1:https://jingyan.baidu.com/article/76a7e409edbb4dfc3b6e1516.html 方法2:https://www.cnblogs.com/yiyi ...