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 Web框架
Mar 20 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python SVM(支持向量机)实现方法完整示例
Jun 19 Python
从0开始的Python学习014面向对象编程(推荐)
Apr 02 Python
python django框架中使用FastDFS分布式文件系统的安装方法
Jun 10 Python
简单了解python的一些位运算技巧
Jul 13 Python
浅谈keras的深度模型训练过程及结果记录方式
Jan 24 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
python实现猜数游戏(保存游戏记录)
Jun 22 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
Nov 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 和 HTML
2006/10/09 PHP
PHP错误提示的关闭方法详解
2013/06/23 PHP
thinkphp四种url访问方式详解
2014/11/28 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
WordPress中用于获取搜索表单的PHP函数使用解析
2016/01/05 PHP
jQuery timers计时器简单应用说明
2010/10/28 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
js indexOf()定义和用法
2012/10/21 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
为jQuery添加Webkit的触摸的方法分享
2014/02/02 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
JavaScript实现自动弹出窗口并自动关闭窗口的方法
2015/08/06 Javascript
理解javascript模块化
2016/03/28 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
2016/08/03 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
2017/02/22 Javascript
bootstrap select插件封装成Vue2.0组件
2017/04/17 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Less 安装及基本用法
2018/05/05 Javascript
在Python下使用Txt2Html实现网页过滤代理的教程
2015/04/11 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
Ruby中的保护方法和私有方法与一般面向对象程序设计语言的一样吗
2013/05/01 面试题
高级护理实习生自荐信
2013/09/28 职场文书
护理专业自荐信范文
2015/03/06 职场文书
中学推普周活动总结
2015/05/07 职场文书
关于开学的感想
2015/08/10 职场文书
《确定位置》教学反思
2016/02/18 职场文书
详解vue中v-for的key唯一性
2021/05/15 Vue.js
python套接字socket通信
2022/04/01 Python
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技
golang使用map实现去除重复数组
2022/04/14 Golang