1.我们拿两台设备来模拟操作下,使用:adb devices查看连接状况,获取到设备名称。
2.获取需要操作app的包名和页面名称(前提该设备已经打开了app)
3.设置初始配置信息
from appium import webdriver
import threading
# 设备一
def run_01():
desired = {
"platformName": "Android", # 手机系统
"platformVersion": "7.1.2", # 手机系统版本
"deviceName": '127.0.0.1:62001', # 连接的设备(adb devices)
"automationName": "UiAutomator2",
"appPackage": "", # app包名
"appActivity": "", # app的启动页面
"autoGrantPermissions": "true", # 默认允许app获取相关权限
"noReset": True # 保留登录模式
}
driver_01 = webdriver.Remote(command_executor="http://127.0.0.1:4723/wd/hub", desired_capabilities=desired)
# driver(driver_01)
# 设备二
def run_02():
desired = {
"platformName": "Android", # 手机系统
"platformVersion": "11", # 手机系统版本
"deviceName": '90bf8faf', # 连接的设备(adb devices)
"automationName": "UiAutomator2", # 自动化测试框架 (1.4以上的appium不用写)
"appPackage": "", # app包名
"appActivity": "", # app的启动页面
"autoGrantPermissions": "true", # 默认允许app获取相关权限
"noReset": True # 保留登录模式
}
driver_02 = webdriver.Remote(command_executor="http://127.0.0.1:4720/wd/hub", desired_capabilities=desired)
# driver(driver_02)
不同的设备启动配置端口号是不一样的,我这里一个是4723,一个是4720.
4.打开页面后操作元素,这里只简单的关闭页面(具体方法可参考:https://www.cnblogs.com/lihongtaoya/p/16988855.html)
def driver(drivers): # 元素操作方法
time.sleep(5)
drivers.quit()
5.使用多线程运行多台设备
def driver(drivers): # 元素操作方法
time.sleep(5)
drivers.quit()
6.启动appium服务
启动指令:appium --allow-cors -p 端口号 -U 设备名称
我这边是两台设备,因此需要启动两个服务,启动完之后就可以运行main函数了。
7.以上实例是将配置信息写在了代码中,若是有十几二十几台设备的话,这种写法有点麻烦,我们可以将配置信息的产生封装在json文件中使用时用load()方法去取参数即可。
1)创建一个json文件存放配置信息
[{
"url": "http://127.0.0.1:4723/wd/hub",
"desired": {
"platformName": "Android",
"platformVersion": "7.1.2",
"deviceName": "127.0.0.1:62001",
"automationName": "UiAutomator2",
"appPackage": "",
"appActivity": "",
"autoGrantPermissions": "true",
"noReset": true}
}, {
"url": "http://127.0.0.1:4720/wd/hub",
"desired":{
"platformName": "Android",
"platformVersion": "11",
"deviceName": "90bf8faf",
"automationName": "UiAutomator2",
"appPackage": "",
"appActivity": "",
"autoGrantPermissions": "true",
"noReset": true}
}]
2)读取配置信息,这里直接贴完整代码了。
def test_run(url, desired):
driver_02 = webdriver.Remote(command_executor=url, desired_capabilities=desired)
driver(driver_02)
def driver(drivers): # 元素操作方法
time.sleep(5)
drivers.quit()
if __name__ == '__main__':
with open("./appium.json", mode="r", encoding="utf-8") as f:
data = list(json.load(f))
for i in range(0, len(data)):
a = threading.Thread(target=test_run, args=(data[i]["url"], data[i]["desired"]))
a.start()
作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:开心螺蛳粉】自提!
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群:1150305204,里面有各种测试开发资料和技术可以一起交流哦。