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之入门(二)基本数据类型
May 25 Python
Python2.x利用commands模块执行Linux shell命令
Mar 11 Python
Python 编码处理-str与Unicode的区别
Sep 06 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
利用pyinstaller或virtualenv将python程序打包详解
Mar 22 Python
运动检测ViBe算法python实现代码
Jan 09 Python
Face++ API实现手势识别系统设计
Nov 21 Python
Python 中的参数传递、返回值、浅拷贝、深拷贝
Jun 25 Python
由面试题加深对Django的认识理解
Jul 19 Python
wxPython实现文本框基础组件
Nov 18 Python
Python生成九宫格图片的示例代码
Apr 14 Python
Python 发送SMTP邮件的简单教程
Jun 24 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 柱状图实现代码
2009/12/04 PHP
深入理解PHP原理之Session Gc的一个小概率Notice
2011/04/12 PHP
简单的php写入数据库类代码分享
2011/07/26 PHP
用javascript编写的第一人称射击游戏
2007/02/25 Javascript
ext jquery 简单比较
2010/04/07 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
2013/06/04 Javascript
JavaScript的History API使搜索引擎抓取AJAX内容
2015/12/07 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
Web程序员必备的7个JavaScript函数
2016/06/14 Javascript
最棒的Angular2表格控件
2016/08/10 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
nodejs body-parser 解析post数据实例
2017/07/26 NodeJs
vue如何在自定义组件中使用v-model
2018/05/14 Javascript
vue2.0$nextTick监听数据渲染完成之后的回调函数方法
2018/09/11 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
JS的时间格式化和时间戳转换函数示例详解
2020/07/27 Javascript
python获取文件后缀名及批量更新目录下文件后缀名的方法
2014/11/11 Python
Python快速排序算法实例分析
2017/11/29 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python socket非阻塞模块应用示例
2019/09/12 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
opencv 图像加法与图像融合的实现代码
2020/07/08 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
详解使用python爬取抖音app视频(appium可以操控手机)
2021/01/26 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
精选鞋类、服装和配饰的全球领先目的地:Bodega
2021/02/27 全球购物
南京某公司笔试题
2013/01/27 面试题
优秀社区干部事迹材料
2014/02/03 职场文书
模具设计与制造专业自荐书
2014/07/01 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
声乐专业大学生职业生涯规划书:理想的未来需要自己去打造
2014/09/20 职场文书
优秀教师申报材料
2014/12/16 职场文书
婚礼领导致辞大全
2015/07/28 职场文书
2019秋季运动会口号
2019/06/25 职场文书
python3美化表格数据输出结果的实现代码
2021/04/14 Python