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中装饰器的一个妙用
Feb 08 Python
在Python编程过程中用单元测试法调试代码的介绍
Apr 02 Python
python获取目录下所有文件的方法
Jun 01 Python
Selenium(Python web测试工具)基本用法详解
Aug 10 Python
python调试神器PySnooper的使用
Jul 03 Python
浅析Python 引号、注释、字符串
Jul 25 Python
python pptx复制指定页的ppt教程
Feb 14 Python
python数据爬下来保存的位置
Feb 17 Python
Python 随机按键模拟2小时
Dec 30 Python
详解基于Facecognition+Opencv快速搭建人脸识别及跟踪应用
Jan 21 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 Python
python turtle绘图命令及案例
Nov 23 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 参数过滤、数据过滤详解
2015/10/26 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
Yii2.0框架behaviors方法使用实例分析
2019/09/30 PHP
让你的PHP,APACHE,NGINX支持大文件上传
2021/03/09 PHP
HTML5如何适配 iPhone IOS 底部黑条
2021/03/09 HTML / CSS
Prototype 学习 工具函数学习($方法)
2009/07/12 Javascript
jquery应该如何来设置改变按钮input的onclick事件
2012/12/10 Javascript
jQuery入门介绍之基础知识
2015/01/13 Javascript
JS实现简洁、全兼容的拖动层实例
2015/05/13 Javascript
理解javascript异步编程
2016/01/27 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
纯javascript实现选择框的全选与反选功能
2019/04/08 Javascript
微信小程序自定义组件实现环形进度条
2020/11/17 Javascript
javascript实现动态时钟的启动和停止
2020/07/29 Javascript
Vue的transition-group与Virtual Dom Diff算法的使用
2019/12/09 Javascript
JavaScript实现简单进度条效果
2020/03/25 Javascript
python使用百度翻译进行中翻英示例
2014/04/14 Python
python比较2个xml内容的方法
2015/05/11 Python
Python文件及目录操作实例详解
2015/06/04 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
2018/04/23 Python
使用pycharm生成代码模板的实例
2018/05/23 Python
对python条件表达式的四种实现方法小结
2019/01/30 Python
Python autoescape标签用法解析
2020/01/17 Python
python实现全排列代码(回溯、深度优先搜索)
2020/02/26 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
澳大利亚快时尚鞋类市场:Billini
2018/05/20 全球购物
小学班长竞选演讲稿
2014/04/24 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
工厂车间标语
2014/06/19 职场文书
一份文言文检讨书
2014/09/13 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
2015年“公民道德宣传日”活动方案
2015/05/06 职场文书
孩子满月酒答谢词
2015/09/30 职场文书