在前面的文章中重点介绍了一些元素的定位方法,定位到元素后,就需要操作元素了。本篇通过简单案例来介绍app应用中的一些常用操作。
一、案例介绍
下面列表中有四个字典,每个字典中的num1代表第一个操作数,num2代表第二个操作数,op代表操作符。
现要求用代码读取这个列表中的字典,在计算机apk中自动化完成对应的运算操作,并通过读取计算器的结果框中显示的数字,打印运算结果。
dict_data = [
{'num1': 78, 'num2': 98, 'op': '+'},
{'num1': 56, 'num2': 34, 'op': '-'},
{'num1': 34, 'num2': 2, 'op': '*'},
{'num1': 123, 'num2': 89, 'op': '/'}
]
二、代码实现
from appium import webdriver
import time
dict_data = [
{'num1': 78, 'num2': 98, 'op': '+'},
{'num1': 56, 'num2': 34, 'op': '-'},
{'num1': 34, 'num2': 2, 'op': '*'},
{'num1': 123, 'num2': 89, 'op': '/'}
]
digit_data = {
'0': 'zero',
'1': 'one',
'2': 'two',
'3': 'three',
'4': 'four',
'5': 'five',
'6': 'six',
'7': 'seven',
'8': 'eight',
'9': 'nine'
}
op_data = {
'+': 'plus',
'-': 'minus',
'*': 'multiply',
'/': 'divide'
}
# 设置启动参数
desired_cap = {}
desired_cap['platformName'] = 'Android'
desired_cap['platformVersion'] = '6.0.1'
desired_cap['deviceName'] = '127.0.0.1:7555'
# 必须参数,指定被测软件的包名
desired_cap['appPackage'] = 'com.differ.xiaoming'
# 必须参数,指定要打开app的哪个页面
desired_cap['appActivity'] = 'com.differ.xiaoming.activity.CalcActivity'
desired_cap['automationName']='Uiautomator2'
desired_cap['noReset'] = True
desired_cap['newCommandTimeout'] = 6000
desired_cap['unicodeKeyboard'] = True
desired_cap['resetKeyboard'] = True
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_cap)
time.sleep(5)
def get_res(num1, num2, op):
# 1.解析第一个操作数
for letter in num1:
driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(digit_data[letter])).click()
# 2.解析操作符
driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(op_data[op])).click()
# 3.解析第二个操作数
for letter in num2:
driver.find_element('id', 'com.differ.xiaoming:id/btn_{}'.format(digit_data[letter])).click()
# 4.点击等于符号
driver.find_element('id', 'com.differ.xiaoming:id/btn_equal').click()
# 5.定位结果框,并对结果进行打印
res = driver.find_element('id', 'com.differ.xiaoming:id/et_show').text
print('{}{}{}={}'.format(num1, op, num2, res))
for data in dict_data:
get_res(str(data['num1']), str(data['num2']), data['op'])