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生成随机验证码(中文验证码)示例
Apr 03 Python
学习python之编写简单简单连接数据库并执行查询操作
Feb 27 Python
Python爬虫辅助利器PyQuery模块的安装使用攻略
Apr 24 Python
Python标准库06之子进程 (subprocess包) 详解
Dec 07 Python
python记录程序运行时间的三种方法
Jul 14 Python
如何使用Python进行OCR识别图片中的文字
Apr 01 Python
PyQt5 实现字体大小自适应分辨率的方法
Jun 18 Python
解决pycharm 工具栏Tool中找不到Run manager.py Task的问题
Jul 01 Python
Python 时间戳之获取整点凌晨时间戳的操作方法
Jan 28 Python
Python3使用xlrd、xlwt处理Excel方法数据
Feb 28 Python
Python反爬虫伪装浏览器进行爬虫
Feb 28 Python
Selenium Webdriver元素定位的八种常用方式(小结)
Jan 13 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中var_export与var_dump的区别分析
2010/08/21 PHP
php精确的统计在线人数的方法
2015/10/21 PHP
简介WordPress中用于获取首页和站点链接的PHP函数
2015/12/17 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
laravel model 两表联查示例
2019/10/24 PHP
php经典趣味算法实例代码
2020/01/21 PHP
javascript 硬盘序列号+其它硬件信息
2008/12/23 Javascript
jquery 模式对话框终极版实现代码
2009/09/28 Javascript
获取非最后一列td值并将title设为该值的方法
2013/10/30 Javascript
JavaScript中双叹号(!!)作用示例介绍
2014/04/10 Javascript
举例讲解AngularJS中的模块
2015/06/17 Javascript
一分钟理解js闭包
2016/05/04 Javascript
jquery.tableSort.js表格排序插件使用方法详解
2020/08/12 Javascript
js浏览器滚动条卷去的高度scrolltop(实例讲解)
2017/07/07 Javascript
vue自定义指令directive的使用方法
2019/04/07 Javascript
详解基于Wepy开发小程序插件(推荐)
2019/08/01 Javascript
Python3 入门教程 简单但比较不错
2009/11/29 Python
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python虚拟环境virtualenv的安装与使用
2017/09/21 Python
Python 字符串换行的多种方式
2018/09/06 Python
将pytorch转成longtensor的简单方法
2020/02/18 Python
Django单元测试中Fixtures的使用方法
2020/02/26 Python
解决jupyter notebook打不开无反应 浏览器未启动的问题
2020/04/10 Python
Django返回HTML文件的实现方法
2020/09/17 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
美国最流行的男士时尚网站:Touch of Modern
2018/02/05 全球购物
Stio官网:男女、儿童户外服装
2019/12/13 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
小孩百日宴答谢词
2014/01/15 职场文书
30年同学聚会感言
2014/01/30 职场文书
应届生求职自荐信
2014/07/04 职场文书
元旦晚会活动总结
2014/07/09 职场文书
孩子教育的心得体会
2014/09/01 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
交通安全横幅标语
2014/10/07 职场文书