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实现微信接口(itchat)详细介绍
Oct 23 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
Pandas标记删除重复记录的方法
Apr 08 Python
django表单实现下拉框的示例讲解
May 29 Python
numpy中矩阵合并的实例
Jun 15 Python
在macOS上搭建python环境的实现方法
Aug 13 Python
Pytorch 数据加载与数据预处理方式
Dec 31 Python
python实现遍历文件夹图片并重命名
Mar 23 Python
jupyter 使用Pillow包显示图像时inline显示方式
Apr 24 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
Django自带的用户验证系统实现
Dec 18 Python
python识别围棋定位棋盘位置
Jul 26 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
再次研究下cache_lite
2007/02/14 PHP
PHP用反撇号执行外部命令
2015/04/14 PHP
PHP调用其他文件中的类
2018/04/02 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
Yii2框架中一些折磨人的坑
2019/12/15 PHP
javascript 多级checkbox选择效果
2009/08/20 Javascript
Javascript(AJAX)解析XML的代码(兼容FIREFOX/IE)
2010/07/11 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
windows8.1+iis8.5下安装node.js开发环境
2014/12/12 Javascript
JavaScript中pop()方法的使用教程
2015/06/09 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
Bootstrap的modal拖动效果
2016/12/25 Javascript
jQuery插件echarts去掉垂直网格线用法示例
2017/03/03 Javascript
JavaScript EventEmitter 背后的秘密 完整版
2018/03/29 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
js实现mp3录音通过websocket实时传送+简易波形图效果
2020/06/12 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
python实现linux服务器批量修改密码并生成execl
2014/04/22 Python
Python中pip安装非PyPI官网第三方库的方法
2015/06/02 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
Python中常用信号signal类型实例
2018/01/25 Python
Python3.5文件读与写操作经典实例详解
2019/05/01 Python
浅谈matplotlib.pyplot与axes的关系
2020/03/06 Python
Python读写压缩文件的方法
2020/07/30 Python
网上书店创业计划书
2014/01/12 职场文书
护士辞职信模板
2014/01/20 职场文书
在校生自我鉴定
2014/01/23 职场文书
运动会稿件100字
2014/02/21 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
学校实习推荐信
2015/03/27 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang