AppiumLibrary 联动菜单
在手机自动化过程中,我们会遇到一些联动的菜单。
这种菜单我们很难选择到指定的内容
这里我写一个选择地铁站点的例子这里需要自己写一个读取csv 文件的功能,自己扩展一下测试库: 把TestLibrary 放到
python_path/Lib/site-packages 目录下 然后重启 Ride 才能生效
#encoding=utf-8
import csv
class TestLibrary:
"""测试测试库的导入"""
def getCSV(self,file,model='rb'):
'''get test data from csv,return list'''
with open(file,model) as f:
reader = csv.reader(f)
data = []
for row in reader:
data.append(row)
for i in xrange(len(data)):
for j in xrange(len(data[i])):
if isinstance(data[i][j],str):
data[i][j]=data[i][j].decode('gbk')
else:
data[i][j]=data[i][j]
return data
这里看一下这个联动的菜单
线路变了之后,站点也会跟着变。这个时候我们可能需要一个二维数组,或者一个测试数据文件。
我们需要在对应目录下面新建 终点.csv 和 起点.csv 两个文件
用excel 打开之后这样编辑:第一列线路,
对应行填写手机界面上的站点,注意顺序要和手机上面的一致。
然后我们看一下怎样实现这个选择的功能: 这个功能需要两个关键字${Line} 和 ${Station}
首先点击终点这个元素
用 @{终点} 变量去获取 终点.csv 文件中的数据 #注意这个是按行取出的一个List
创建@{tmp} 空的临时List
For 循环,取出@{终点} List 中的每一行 ${row}
把 ${row[1:]} 的值赋值给@{tmp} list变量 # 注意 ${row} 取出的是完整的一行,第一个元素是 线路,${row[1:]} 表示除第一个元素以外的所有元素
然后判断 ${row[0]} 线路 和 给出的变量 ${Line} 是否相等,如果相等就退出循环,这个时候@{tmp} 里面存储的就是线路对应的所有站点,如果不相等,就滑动一格,暂停0.5秒,继续循环。
线路循环完成,这个时候就是站点的循环。 循环 @{tmp} (站点) 里面的所有元素 ${item}, 如果 ${item} 和给出的 ${station} 相等, 就退出循环,否则就,滑动一格,暂停0.5秒,继续循环。
点击页面上的确定按钮,完成选择
验证终点元素中的文本,是否和期望选择的站点一致。