python操作模拟器多开操作_appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行...
前言
做android自动化的时候,启动一个appium服务,只能匹配一个手机去自动化执行。有时候想同一套代码,可以在不同的手机上执行,测下app在不同手机上兼容性。
这就需要启动多个appium服务了,并且android设备和appium要一一对应才行。
启动多个手机
1.这里以夜神模拟器和雷电模拟器为例,先启动这2个设备
2.adb devices查看设备名称,多个设备会显示多行数据
启动多个appium服务
1.启动appium服务,可以用命令行模式,在cmd里面启动,可以参考上一篇 appium命令行参数
比如第一个appium服务,可以指定一个端口4730,然后指定一个设备名称【雷电模拟器】,也就是-U参数(adb devices可以查看)
appium -a 127.0.0.1 -p 4730 -U emulator-5554 --no-reset
2.第二个appium 服务指定设备名称【夜神模拟器】
appium -a 127.0.0.1 -p 4740 -U 127.0.0.1:62001 --no-reset
yaml管理配置
1.运行不同手机时候,desired_caps的参数配置肯定也是需要多个的,如何高效的管理多个desired_caps配置呢?
这里我用yaml文件去管理,更方便查看
desired_caps = {
'platformName': 'Android', # 手机是Android还是ios
'deviceName': 'emulator-5554',
'platformVersion': '5.1.1', # android版本号
'noReset': True,
# apk包名 # aapt工具查看
'appPackage': 'com.taobao.taobao',
# apk的launcherActivity
'appActivity': 'com.taobao.tao.welcome.Welcome'
}
2.yaml文件配置如下:
- desc: 设备名称_雷电,appium启动服务端口号_4723
port: 4730
desired_caps:
platformName: Android
deviceName: emulator-5554
appPackage: com.taobao.taobao
noReset: !!bool True
udid: emulator-5554
appActivity: com.taobao.tao.welcome.Welcome
- desc: 设备名称_夜神,appium启动服务端口号_4724
port: 4740
desired_caps:
platformName: Android
deviceName: 127.0.0.1:62001
appPackage: com.taobao.taobao
noReset: !!bool True
udid: 127.0.0.1:62001
appActivity: com.taobao.tao.welcome.Welcome
读yaml配置
1.读出来多个配置是list类型,desc是设备的描述,可以通过描述来找到对应的设备名称,如:雷电
2.返回desired_caps配置信息和port端口号,后面代码会用到
# coding=utf-8
from appium import webdriver
import time
import yaml
import os
def get_desired_caps(devicesName='雷电'):
'''
从yaml读取desired_caps配置信息
参数name:设备名称,如:夜神/雷电
:return: desired_caps字典格式 和port
'''
curpath = os.path.dirname(os.path.realpath(__file__))
yamlpath = os.path.join(curpath, "taobao.yaml")
print("配置地址:%s" % yamlpath)
f = open(yamlpath, "r", encoding="utf-8")
a = f.read()
f.close()
# 把yaml文件转字典
d = yaml.load(a)
for i in d:
if devicesName in i["desc"]:
print(i)
# 启动服务
start_appium(port=i['port'])
return (i['desired_caps'], i['port'])
运行app代码
def run_app(devicesName):
# 配置参数
desired_caps = get_desired_caps(devicesName)
print(desired_caps)
# 执行代码
driver = webdriver.Remote('http://127.0.0.1:%s/wd/hub' % desired_caps[1], desired_caps[0])
time.sleep(10)
# 点注册登陆
driver.find_element_by_xpath("//*[@text='注册/登录']").click()
time.sleep(6)
# content-desc
driver.find_element_by_xpath("//*[@text='请输入手机号码']").send_keys("15001234000")
driver.find_element_by_xpath("//*[@text='请输入验证码']").send_keys("1111")
python启动appium服务
1.如果嫌手工端口cmd窗口启动服务麻烦,可以用python去启动appium服务,释放你的双手
先判断服务启了没,没启动的话就执行cmd指令启动
# coding=utf-8
from appium import webdriver
import time
import yaml
import os
from tomorrow import threads
# 作者:上海-悠悠 QQ交流群:330467341
def start_appium(port=4723, udid=""):
a = os.popen('netstat -ano | findstr "%s" '% port)
time.sleep(2)
t1 = a.read()
if "LISTENING" in t1:
print("appium服务已经启动:%s" % t1)
# s = t1.split(" ")
# s1 = [i for i in s if i != '']
# pip = s1[-1].replace("\n", "")
else:
# 启动appium服务
# appium -a 127.0.0.1 -p 4740 -U emulator-5554 127.0.0.1:62001 --no-reset
os.system("appium -a 127.0.0.1 -p %s -U %s --no-reset" % (port, udid))
多线程运行
1.多线程用一个很简单的tomorrow框架就行
# coding=utf-8
from appium import webdriver
import time
import yaml
import os
from tomorrow import threads
# 作者:上海-悠悠 QQ交流群:330467341
def start_appium(port=4723, udid=""):
a = os.popen('netstat -ano | findstr "%s" '% port)
time.sleep(2)
t1 = a.read()
if "LISTENING" in t1:
print("appium服务已经启动:%s" % t1)
# s = t1.split(" ")
# s1 = [i for i in s if i != '']
# pip = s1[-1].replace("\n", "")
else:
# 启动appium服务
# appium -a 127.0.0.1 -p 4740 -U emulator-5554 127.0.0.1:62001 --no-reset
os.system("appium -a 127.0.0.1 -p %s -U %s --no-reset" % (port, udid))
def get_desired_caps(devicesName='雷电'):
'''
从yaml读取desired_caps配置信息
参数name:设备名称,如:夜神/雷电
:return: desired_caps字典格式
'''
curpath = os.path.dirname(os.path.realpath(__file__))
yamlpath = os.path.join(curpath, "taobao.yaml")
print("配置地址:%s" % yamlpath)
f = open(yamlpath, "r", encoding="utf-8")
a = f.read()
f.close()
# 把yaml文件转字典
d = yaml.load(a)
for i in d:
if devicesName in i["desc"]:
print(i)
# 启动服务
devicesName = i['desired_caps']['udid']
print(devicesName)
start_appium(port=i['port'], udid=devicesName)
return (i['desired_caps'], i['port'])
@threads(2)
def run_app(devicesName):
# 配置参数
desired_caps = get_desired_caps(devicesName)
print(desired_caps)
# 执行代码
driver = webdriver.Remote('http://127.0.0.1:%s/wd/hub' % desired_caps[1], desired_caps[0])
time.sleep(10)
# 点注册登陆
driver.find_element_by_xpath("//*[@text='注册/登录']").click()
time.sleep(6)
# content-desc
driver.find_element_by_xpath("//*[@text='请输入手机号码']").send_keys("15001234000")
driver.find_element_by_xpath("//*[@text='请输入验证码']").send_keys("1111")
# driver.find_element_by_accessibility_id("帮助").click()
if __name__ == "__main__":
# 作者:上海-悠悠 QQ交流群:330467341
devices = ["夜神", "雷电"]
for i in devices:
run_app(devicesName=i)
上海-悠悠 QQ交流群:330467341
python操作模拟器多开操作_appium+python自动化60-windows上同时启动多个appium服务,让多个android机器并行运行...相关推荐
- python open文件被另一个进程打开怎么办,在Windows上,如何打开一个已经被另一个进程打开进行写入的文件?...
我试图打开另一个进程打开的日志文件并删除前几行. 在Unix上,我只需做一个os.open('/tmp/file.log', os.O_NONBLOCK),这样就可以更接近我的目标.在 现在我被Win ...
- 模拟器真机环境_Appium+python自动化(二)- 环境搭建—下(超详解)
上一篇android测试开发环境已经准备好, 那么接下来就是appium的环境安装和搭建了. 菲哥和小伙伴们开个玩笑,不要觉得自人品不好,就不会成功那都是骗人的.搭建环境和人品半毛钱关系也没有,搭建环 ...
- 基于python的压测工具_基于Python和SIPp的自动化压力测试系统设计和实现
信斌 王桂花 摘要:首先,分析了现有测试系统的不足,之后,介绍了软件组成和运行环境说明,最后,设计了基于Python和SIPp的自动化压力测试系统,并给出了相关代码.新的测试系统克服了现有测试系统的不 ...
- 如何在PyCharm上配置Python解释器,以及解决Windows上PyCharm不能识别C:\Users\Me\AppData路径的问题。
最近遇到这么一个问题.在Windows上安装Python解释器后,我在PyCharm上却不能找到相应的路径.我花了一些时间去解决这个问题,将解决方案记录于此. 1 如何在PyCharm上配置Pytho ...
- 学python电脑要装什么_初学 Python 需要安装哪些软件?
KDnuggets2018年的一个博客发起了一项投票:数据科学中最好用的Python IDE是什么? 本次调查共有1900多人参与,调查结果如下图所示.前5个选择是: Jupyter,57% PyCh ...
- python32位 最大内存_64位windows上的Python 32位内存限制
我不知道你为什么认为你的进程应该能够访问4GB.根据MSDN的Memory Limits for Windows Releases,在64位Windows 7上,一个默认的32位进程得到2GB.*这正 ...
- android 模拟器 ryzen,锐龙安卓模拟器多开:是否开启虚拟化,结果是天上地下
此文发表于2018年9月15日 安卓模拟器多开账号用锐龙行不行? intel的虚拟化技术(intel VT)这个都知道,AMD也很早就有虚拟化技术,名称为AMD-V,不过由于以前的AMD处理器身体太差 ...
- 写字机器人开发之:python opencv linux下合作操作摄像头
2019独角兽企业重金招聘Python工程师标准>>> 设想 之前使用C#控制摄像头的,现在厌烦了windows,决定转移到linux下玩耍.感觉能够python语言特有的好入手,正 ...
- python 安卓模拟器 操作_Python+Appium自动化测试-使用Android模拟器
做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...
- windows下Appium测试环境搭建, 并配合python操作模拟器
环境搭建 安装JDK 1. Java Downloads | Oracle 下载JDK安装包,按照默认方式无脑按照即可 2. 设置系统环境变量,系统环境变量添加JAVA_HOME, 路劲是jdk安装路 ...
最新文章
- 百度智能小程序正式开源,开发方案详解
- eclipse java8报错_eclipse4.3安装支持Java8插件,之后就报错无法打开eclipse,求解?
- 商丘高中计算机考试成绩查询系统,2019商丘中考招生成绩查询时间及网站公布...
- 用python做一个简单的投票程序_以一个投票程序的实例来讲解Python的Django框架使...
- 王者荣耀服务器未响应8月5日苹果,王者荣耀:世冠小组赛8月5日前瞻预测
- 从零开始的LCA(最近公共祖先)
- R语言 朴素贝叶斯分类预测
- 阿里登顶毕马威全球企业创新榜 AliOS引领智能网联汽车产业发展
- Sigmod/Softmax变换
- matlab 分水岭法,matlab中的分水岭算法
- db powerdesigner mysql-odbc连接注意事项
- python从入门到实践答案第十章_Python编程:从入门到实践——【作业】——第十章(文件和异常)...
- WINDOWS镜像概述
- EDA与VHDL题目——38译码器
- html5怎么把图片置顶,html/css如何让图片上下居中(居中垂直)?
- 深度学习研究基因组学
- BZOJ3837 : [Pa2013]Filary
- ORAN专题系列-30:5G基站如何升级到O-RAN基站 - FHGW(FrontHaul Gateway)的时钟同步系统
- TSC打印机,利用javascript实现连续扫码自动打印,配置说明
- sublime3生成html头部按tab键没反应