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 19 Python
TensorFlow实现Softmax回归模型
Mar 09 Python
python素数筛选法浅析
Mar 19 Python
Python实现的KMeans聚类算法实例分析
Dec 29 Python
python字典一键多值实例代码分享
Jun 14 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
Python argparse模块使用方法解析
Feb 20 Python
python GUI库图形界面开发之PyQt5单选按钮控件QRadioButton详细使用方法与实例
Feb 28 Python
django使用JWT保存用户登录信息
Apr 22 Python
Python新手如何进行闭包时绑定变量操作
May 29 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python中的3种定义类方法
Nov 27 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动态页生成静态页的3种常用方法
2014/11/13 PHP
ThinkPHP中公共函数路径和配置项路径的映射分析
2014/11/22 PHP
Symfony2实现在controller中获取url的方法
2016/03/18 PHP
PHP读书笔记整理_结构语句详解
2016/07/01 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
利用毫秒减值计算时长的js代码
2013/09/22 Javascript
JS 去除Array中的null值示例代码
2013/11/20 Javascript
form表单action提交的js部分与html部分
2014/01/07 Javascript
javascript写的一个模拟阅读小说的程序
2014/04/04 Javascript
JavaScript设计模式开发中组合模式的使用教程
2016/05/18 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
BootStrap模态框和select2合用时input无法获取焦点的解决方法
2017/09/01 Javascript
vue进行图片的预加载watch用法实例讲解
2018/02/07 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
微信小程序实现自定义加载图标功能
2018/07/19 Javascript
详解vue2.0+axios+mock+axios-mock+adapter实现登陆
2018/07/19 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
使用IPython下的Net-SNMP来管理类UNIX系统的教程
2015/04/15 Python
在Python中实现贪婪排名算法的教程
2015/04/17 Python
Python中逗号的三种作用实例分析
2015/06/08 Python
详解Django中的权限和组以及消息
2015/07/23 Python
python将ansible配置转为json格式实例代码
2017/05/15 Python
详解从Django Rest Framework响应中删除空字段
2019/01/11 Python
python函数定义和调用过程详解
2020/02/09 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
美国生日蛋糕店:Bake Me A Wish!
2017/02/08 全球购物
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
介绍一下linux文件系统分配策略
2013/02/25 面试题
饮料业务员岗位职责
2013/12/15 职场文书
岗位明星事迹材料
2014/05/18 职场文书
Python3的进程和线程你了解吗
2022/03/16 Python