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中捕捉详细异常信息的代码示例
Sep 18 Python
Python根据区号生成手机号码的方法
Jul 08 Python
Python的装饰器用法学习笔记
Jun 24 Python
分享vim python缩进等一些配置
Jul 02 Python
python 调用有道api接口的方法
Jan 03 Python
Python @property使用方法解析
Sep 17 Python
Pycharm+Python+PyQt5使用详解
Sep 25 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
Oct 21 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
Feb 24 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
Mar 06 Python
python实现猜单词游戏
May 22 Python
详解Python中list[::-1]的几种用法
Nov 16 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/01/07 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
2016/10/10 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
Javascript判断对象是否相等实现代码
2013/03/18 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
JavaScript中的字符串操作详解
2013/11/12 Javascript
javascript获取flash版本号的方法
2014/11/20 Javascript
基于javascript html5实现多文件上传
2016/03/03 Javascript
Javascript highcharts 饼图显示数量和百分比实例代码
2016/12/06 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
Vue 按键修饰符处理事件的方法
2018/05/04 Javascript
分析python动态规划的递归、非递归实现
2018/03/04 Python
使用Python从零开始撸一个区块链
2018/03/14 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
python创建文件时去掉非法字符的方法
2018/10/31 Python
python异步Web框架sanic的实现
2020/04/27 Python
python3中的logging记录日志实现过程及封装成类的操作
2020/05/12 Python
python try...finally...的实现方法
2020/11/25 Python
HTML5 使用 sessionStorage 进行页面传值的方法
2018/07/02 HTML / CSS
德国户外装备、登山运动和攀岩商店:tapir store
2020/02/12 全球购物
数字漫画:comiXology
2020/06/13 全球购物
历史专业毕业生的自我鉴定
2013/11/15 职场文书
安全生产中长期规划实施方案
2014/02/21 职场文书
感恩母亲节演讲稿
2014/05/07 职场文书
学习型班组申报材料
2014/05/31 职场文书
学校综治宣传月活动总结
2014/07/02 职场文书
教师党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
个人整改方案范文
2014/10/25 职场文书
2016年班主任培训心得体会
2016/01/07 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python