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兔子毒药问题实例分析
Mar 05 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
用Python编写脚本使IE实现代理上网的教程
Apr 23 Python
解决python 输出是省略号的问题
Apr 19 Python
python框架中flask知识点总结
Aug 17 Python
Python如何实现转换URL详解
Jul 02 Python
Python MongoDB 插入数据时已存在则不执行,不存在则插入的解决方法
Sep 24 Python
python爬虫 Pyppeteer使用方法解析
Sep 28 Python
Python实现队列的方法示例小结【数组,链表】
Feb 22 Python
python不相等的两个字符串的 if 条件判断为True详解
Mar 12 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
Apr 29 Python
python 远程执行命令的详细代码
Feb 15 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
咖啡语言
2021/03/03 咖啡文化
用PHP函数解决SQL injection
2006/12/09 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php判断数组中是否存在指定键(key)的方法
2015/03/17 PHP
php导出中文内容excel文件类实例
2015/07/06 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP防盗链的基本思想 防盗链的设置方法
2015/09/25 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
PHP面向对象程序设计中的self、static、parent关键字用法分析
2019/08/14 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
JS的千分位算法实现思路
2013/07/31 Javascript
jquery选择器-根据多个属性选择示例代码
2013/10/21 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
Bootstrap页面布局基础知识全面解析
2016/06/13 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
详解vue组件通信的三种方式
2017/06/30 Javascript
JS字符串去除连续或全部重复字符的实例
2018/03/08 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
vue-router权限控制(简单方式)
2018/10/29 Javascript
Vue-cli 移动端布局和动画使用详解
2020/08/10 Javascript
python端口扫描系统实现方法
2014/11/19 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
python中函数默认值使用注意点详解
2016/06/01 Python
树莓派实现移动拍照
2019/06/22 Python
Python Django 页面上展示固定的页码数实现代码
2019/08/21 Python
Stefania Mode英国:奢华设计师和时尚服装
2017/10/23 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
办公室经理岗位职责
2014/01/01 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
英语故事演讲稿
2014/04/29 职场文书
安全先进个人材料
2014/12/29 职场文书
2016国庆节67周年红领巾广播稿
2015/12/18 职场文书
Python数据分析之绘图和可视化详解
2021/06/02 Python