Python3+Appium实现多台移动设备操作的方法


Posted in Python onJuly 05, 2019

需求:

连接本机的(两台安卓手机)或者本机安装的(安卓模拟器两个),实现同时安装本地apk包 。

demon.py

特别说明:必须写udid才能实现同时对两台以上的移动设备操作。对deviceName中的值进行修改后是无法区分移动设备的,如果只修改deviceName的value就只能在同一台设备上进行安装了。

下面代码只是基础介绍,扩展到框架中需要根据自己需求做;

import os
import threading
import multiprocessing
from appium import webdriver
class ConcurrentExecution:
   """
   多进程并发安装本地apk
   """
     def __init__(self):
      self.driver_port = [[4700,"127.0.0.1:21503"],[4701,"127.0.0.1:21513"]]


  def android_driver(self,i):
     driver_list = []
     capabilities = {
        "platformName" : "Android",
        "udid"          : self.driver_port[i][1],
        "deviceName"   : self.driver_port[i][1],
        "app"          : "E:\\appiumautocode\\xxxoooox.apk",
        "noReset"       : "True"
         }
     driver = webdriver.Remote("http://127.0.0.1:{0}/wd/hub".format(self.driver_port[i][0]),capabilities)
     driver_list.append(driver)
     return driver_list


   def kill_server(self):
     """
      清理appium环境,杀node.exe的进程
      :return:
   
 """
     server_list = os.popen('tasklist | find "node.exe"').readlines()
     print(server_list)
     if len(server_list)>0:
      os.system("taskkill -F -PID node.exe")


   def start_appium_server(self,j):
     """
      启动appium服务器
      :return:
     """
     li_port = [4700,4701]
     os.system("appium -p {0}".format(li_port[j]))


if __name__ == '__main__':

   obj = ConcurrentExecution()
   obj.kill_server()
  
   for j in range(2): #启动服务
      th = threading.Thread(target=obj.start_appium_server,args=(j,))
    
th.start()

   for i in range(2): #运行
      t = multiprocessing.Process(target=obj.android_driver,args=(i,))
      t.start()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python去除扩展名的实例讲解
Apr 23 Python
Python设计模式之命令模式原理与用法实例分析
Jan 11 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
bluepy 一款python封装的BLE利器简单介绍
Jun 25 Python
对Django中内置的User模型实例详解
Aug 16 Python
Python内置数据类型list各方法的性能测试过程解析
Jan 07 Python
多个python文件调用logging模块报错误
Feb 12 Python
Python分析最近大火的网剧《隐秘的角落》
Jul 02 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 Python
用Python创建简易网站图文教程
Jun 11 Python
Python PIL读取的图像发生自动旋转的实现方法
Jul 05 #Python
python读出当前时间精度到秒的代码
Jul 05 #Python
python读写csv文件方法详细总结
Jul 05 #Python
Python考拉兹猜想输出序列代码实践
Jul 05 #Python
python读写csv文件实例代码
Jul 05 #Python
python暴力解压rar加密文件过程详解
Jul 05 #Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 #Python
You might like
基于php使用memcache存储session的详解
2013/06/25 PHP
thinkPHP简单实现多个子查询语句的方法
2016/12/05 PHP
Firefox 无法获取cssRules 的解决办法
2006/10/11 Javascript
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
用js实现计算加载页面所用的时间
2010/04/02 Javascript
JavaScript聚焦于第一个字段的代码
2010/10/15 Javascript
jquery随机展示头像代码
2011/12/21 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
Jquery UI震动效果实现原理及步骤
2013/02/04 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
js图片翻书效果代码分享
2015/08/20 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
如何开发出更好的JavaScript模块
2017/12/22 Javascript
解决vue处理axios post请求传参的问题
2018/03/05 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
浅谈JavaScript面向对象--继承
2019/03/20 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
pycharm安装和首次使用教程
2018/08/27 Python
python实现邮件发送功能
2019/08/10 Python
Python requests设置代理的方法步骤
2020/02/23 Python
python 利用zmail库发送邮件
2020/09/11 Python
美国校园市场:OCM
2017/06/08 全球购物
澳大利亚制造的羊皮靴:Original UGG Boots
2017/11/13 全球购物
毕业生个人的求职信范文
2013/12/03 职场文书
公司年终奖分配方案
2014/06/16 职场文书
村主任个人对照检查材料
2014/10/01 职场文书
大学生考试作弊检讨书1000字
2014/10/14 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
培训简讯范文
2015/07/20 职场文书