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的Scrapy爬虫框架使用代理进行采集的方法
Feb 18 Python
Python3控制路由器——使用requests重启极路由.py
May 11 Python
用Pycharm实现鼠标滚轮控制字体大小的方法
Jan 15 Python
决策树剪枝算法的python实现方法详解
Sep 18 Python
Python中itertools的用法详解
Feb 07 Python
解决pycharm中导入自己写的.py函数出错问题
Feb 12 Python
python离线安装外部依赖包的实现
Feb 13 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
如何在Python对Excel进行读取
Jun 04 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
解决virtualenv -p python3 venv报错的问题
Feb 05 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 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使用cookie保存用户登录的用户名实例
2015/01/26 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
javascript或asp实现的判断身份证号码是否正确两种验证方法
2009/11/26 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
2012/05/23 Javascript
Google Dart编程语法和基本类型学习教程
2013/11/27 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
2015/09/06 Javascript
jQuery+css实现的蓝色水平二级导航菜单效果代码
2015/09/11 Javascript
Javascript使用SWFUpload进行多文件上传
2016/11/16 Javascript
js获取指定时间的前几秒
2017/04/05 Javascript
js前端面试之同步与异步问题详解
2019/04/03 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
[01:48]DOTA2 2015国际邀请赛中国区预选赛第二日战报
2015/05/27 DOTA
Python 过滤字符串的技巧,map与itertools.imap
2008/09/06 Python
Python协程的用法和例子详解
2017/09/09 Python
Python设计模式之桥接模式原理与用法实例分析
2019/01/10 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python中利用LSTM模型进行时间序列预测分析的实现
2019/07/26 Python
Python jieba库用法及实例解析
2019/11/04 Python
python生成器用法实例详解
2019/11/22 Python
python之array赋值技巧分享
2019/11/28 Python
Python selenium自动化测试模型图解
2020/04/15 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
HTML5 对各个标签的定义与规定:body的介绍
2012/06/21 HTML / CSS
BNKR中国官网:带你感受澳洲领先潮流时尚
2018/08/21 全球购物
美国运动鞋和服装网上商店:YCMC
2018/09/15 全球购物
物理教育专业毕业生推荐信
2013/11/03 职场文书
4s店总经理岗位职责
2013/12/31 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
承诺书范文
2014/06/03 职场文书
股东合作协议书
2014/09/12 职场文书
党的群众路线教育实践活动个人对照检查材料范文
2014/09/25 职场文书
中小学生学籍证明
2014/10/25 职场文书
2015年学生会纪检部工作总结
2015/03/31 职场文书