学会使用python启动多个appium server,然后获取
2019-12-17 本文已影响0人
呼啦小姐
思路如下:
第一步,搭建appium环境,可参考博客 移动端自动化测试-Windows-Android-Appium环境搭建 (我之前已搭建好环境,忽略了第一步)
第二步,使用USB线连接PC端和要测试的设备
第三步,获取设备信息,即设备ID,设备版本号,设备的appActivity。可参考我之前的一篇文章 获取设备信息
第四步,创建start_appium.bat文件,用来存储启动appium server的指令,文件内容为空
第五步,编写脚本实现
项目路径如下:
项目结构.png
文件名:AppiumService.py,代码如下:
import os
from time import sleep
from appium import webdriver
from com.appium.product.GetDevicesMsgs import GetDeviceMsgs
# 开启appium server
def start_server(IP, PORT):
text = "@echo off\ntitle start Appium Server {}\ncmd /c \"appium -a {} -p {} --session-override\"".format(IP, IP, PORT)
ff = open('start_appium.bat', 'w') #以覆盖的形式写入
ff.write(text)
ff.close()
os.system('start start_appium.bat')
sleep(15)
def desired_capabilities(info):
info = info
#定义appium参数
desired_caps = {
'platformName': 'Android',
'platformVersion': info['deviceVersion'],
'deviceName': info['deviceId'],
# 因为我们的业务,所有的APP的报名都是一样的,所以这里是写死的,比如com.****.***
'appPackage': '替换为自己APP的包名',
'appActivity': info['appActivity'],
# 不要在会话前重置应用状态
"noReset": True,
'appWaitPackage': '替换为自己APP的包名',
'newCommandTimeout': 1800,
}
return desired_caps
def get_driver():
# 获取设备ID
ids = GetDeviceMsgs().getDeviceIds()
# 获取设备信息 即设备ID,设备版本号,设备的appActivity
deviceinfo_info = GetDeviceMsgs().getDeviceMsgs(ids)
print("deviceinfo_info is ", deviceinfo_info)
# 存储设备的driver集合
driver_cap = {}
num = 5
for info in deviceinfo_info:
IP = "127.0.0.{}".format(num)
if len(str(num)) == 1:
PORT = "472{}".format(num)
else:
PORT = "47{}".format(num)
start_server(IP, PORT)
# 定义appium参数
desired_caps = desired_capabilities(info)
# 获取设备driver
driver = webdriver.Remote('http://{}:{}/wd/hub'.format(IP, PORT), desired_caps)
driver.implicitly_wait(15)
print("driver is ", driver)
# 将设备driver存储在字典中,key值为设备的deviceId
driver_cap[info['deviceId']] = driver
num = num + 2
return driver_cap
if __name__ == '__main__':
get_driver()