前置条件
完成软件和环境的安装后就可以开始移动端自动化脚本的编写了。
连接设备
手机打开USB调试模式,连接手机。此时去命令窗口查看自己的设备是否已经连接。
让后打开Appium Server,进行配置,设置Android与Java的环境地址。
启动服务器,即可。
脚本编写
初始化设备参数
首先对于手机的参数进行填写,对于要进行测试的APP的信息也进行获取。
import time
from appium import webdriver
# 初始化参数
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '11', # 手机安卓版本
'deviceName': 'ncaa', # 设备名,安卓手机可以随意填写
'appPackage': 'com.cainiao.wireless', # 启动APP的包名
'appActivity': '.homepage.view.activity.WelcomeActivity', # 启动的Activity名称
'noReset': True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
'newCommandTimeout': 6000, # 命令的时间间隔
'unicodeKeyboard': True, # 绕过手机键盘操作,unicodeKeyboard是使用unicode编码方式发送字符串,即中文
'resetKeyboard': True, # 绕过手机键盘操作,resetKeyboard是将键盘隐藏起来
}
以微信为例,我们在命令窗口中输入该手机的所有的第三方软件,获取手机上所需包名。
在获取该APP登录的活动。首先在手机上打开微信,并在CMD中进行操作。从而获取到了微信的包名与登录的活动名。
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
time.sleep(5)
之后进行APPium的连接,手机就会自动打开微信了。
操作命令
下一步,我们打开Android UI分析器。获取到了目前手机页面的信息。根据我们的目的,找到自己所需的组件即可。根据其ID我们就可以在上手机上定位它,从而完成我们相要的操作。
脚本运行
具体代码与实现效果如下:
import time
from appium import webdriver
# 初始化参数
desired_caps = {
'platformName': 'Android', # 被测手机是安卓
'platformVersion': '11', # 手机安卓版本
'deviceName': 'ncaa', # 设备名,安卓手机可以随意填写
'appPackage': 'com.tencent.mm', # 启动APP的包名
'appActivity': '.ui.LauncherUI', # 启动的Activity名称
'noReset': True, # 不要重置App,如果为False的话,执行完脚本后,app的数据会清空,比如你原本登录了,执行完脚本后就退出登录了
'newCommandTimeout': 6000, # 命令的时间间隔
# 'unicodeKeyboard': True, # 绕过手机键盘操作,unicodeKeyboard是使用unicode编码方式发送字符串,即中文
'resetKeyboard': True, # 绕过手机键盘操作,resetKeyboard是将键盘隐藏起来
}
# 连接Appium Server,初始化自动化环境
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
# time.sleep(5)
# 每个操作的等待时间
driver.implicitly_wait(5)
driver.find_element_by_id('com.tencent.mm:id/fzg').click()
driver.find_element_by_id('com.tencent.mm:id/auj').send_keys('川北野生小熊猫')
driver.find_element_by_id('com.tencent.mm:id/ay5').click()
print(" done ")
time.sleep(600)
driver.quit()
原文
|