1.ready.py文件

def getport():aport = random.randint(4700, 4900)# 判断端口是否被占用while getDeviceInfo.is_open('127.0.0.1', aport):aport = random.randint(4700, 4900)bpport = random.randint(4700, 4900)while getDeviceInfo.is_open('127.0.0.1', bpport):bpport = random.randint(4700, 4900)return aport, bpport
def getsys():sys = str(random.randint(4, 6)) + "." + str(random.randint(4, 6)) + "." + "2"return sysclass readyH(object):def __init__(self,device):self.device = deviceaa= getport()self.ap = aa[0]self.bp = aa[1]def installapp(self):os.popen("adb install -r "+str(getApkPath.get_apk_path()))def start_appium(self):  # device_uid,# appium -p 4723 -bp 4724 -U 22238e79 --command-timeout 600errormsg = ""appium_server_url = ""try:ap = getport()[0]bp = getport()[1]print ap,bp,self.devicecmd = 'appium' + ' -p ' + str(self.ap )+ ' --bootstrap-port ' + str(self.bp) + ' -U ' + str(self.device) # ' -U '+ device_uid+print cmd# p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) #stdout=PIPE, stderr=PIPE)p = subprocess.Popen(cmd, shell=True)print pexcept Exception, msg:errormsg = str(msg)def get_driver(self):desired_caps = {}desired_caps['platformName'] = 'Android'desired_caps['platformVersion'] = getsys()desired_caps['app'] = getApkPath.get_apk_path()desired_caps['appPackage'] = 'vStudio.Android.Camera360'desired_caps['deviceName'] = self.deviceurl = 'http://localhost:%s/wd/hub' % str(self.ap)print urlself.driver = webdriver.Remote(url, desired_caps)return self.driverdef disdrop(self):self.driver.close_app()self.driver.quit()def main_case(self):self.installapp()time.sleep(10)self.start_appium()time.sleep(5)self.get_driver()time.sleep(5)testcase.myCase(self.driver,self.device).case_one()time.sleep(5)self.disdrop()

2.run.py

class myThread(threading.Thread):def __init__(self,device):threading.Thread.__init__(self)self.device = devicedef run(self):if __name__ == '__main__':a = ready.readyH(self.device)a.main_case()if __name__ == '__main__':try:devices = mod_config.getDeviceListConfig("alldevices")tt =[]for device in devices :t = myThread(device[0])tt.append(t)for t in tt:t.start()time.sleep(5)for t in tt:t.join()except:print "线程运行失败"

3.testcase.py

#!/usr/bin/python
# -*- coding: utf-8 -*-
from appium import webdriver
from public import mod_config
from lib import appiumLib
import time_initSize = [1080,1776]class myCase(object):def __init__(self,driver,device):self.device = deviceself.driver = driverdef case_one(self):print self.drivertipsclick = mod_config.get_config("firstPage", "开机画面跳过")setting = mod_config.get_config("mine", "设置")about = mod_config.get_config("mine", "关于")c360icon = mod_config.get_config("mine", "图标")entersdk = mod_config.get_config("mine", "特效测试")makePic = mod_config.get_config("mine", "制图测试")mine = mod_config.get_config("firstPage", "我的")appiumLib.click_by_id(self, tipsclick)appiumLib.click_by_name(self, "立即体验")appiumLib.back_times(self, 1)time.sleep(2)appiumLib.click_by_xpath(self, mine)# 取消发布按钮处的提示信息appiumLib.tap_forxy(self, [595, 150], _initSize, 500)appiumLib.click_by_id(self, setting)appiumLib.click_by_id(self, about)appiumLib.click_by_id(self, c360icon)appiumLib.click_by_id(self, entersdk)appiumLib.click_by_id(self, makePic)for i in range(0, 3):time.sleep(5)appiumLib.click_by_id(self, makePic)print "制图完成"

转载于:https://www.cnblogs.com/lixy-88428977/p/10439251.html

appium+python 多设备并行执行脚本【转】相关推荐

  1. 夜神模拟器打开后报错:nox_adb.exe已停止工作,Appium+Python脚本执行报错:500

    一.场景回溯: 夜神模拟器打开后报错:nox_adb.exe已停止工作,Appium+Python脚本执行报错:500. 二.问题解决: 1.cmd中关闭Appium服务: 2.进入夜神模拟器安装的b ...

  2. appium python 抓包_利用appium自动控制移动设备并抓取数据

    利用appium自动控制移动设备并提取数据 学习目标 了解 appium-python-client模块定位元素以及提取其文本内容的方法 了解 appium-python-client模块控制滑动动作 ...

  3. appium+python自动化测试教程_Python+Appium实现自动化测试

    一.环境准备 1.脚本语言:Python3.x IDE:安装Pycharm 2.安装Java JDK .Android SDK 3.adb环境,path添加E:\Software\Android_SD ...

  4. Appium+python自动化8-Appium Python API

    Appium+python自动化8-Appium Python API 前言: Appium Python API全集,不知道哪个大神整理的,这里贴出来分享给大家. 1.contexts contex ...

  5. appium的python教程_移动App Appium自动化测试教程Appium+Python 【2018年新】_IT教程网...

    资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 1-3 移 ...

  6. Appium+Python安卓自动化测试之启动APP和配置获取

    Appium+Python安卓自动化测试之启动APP和配置获取 本文章未讲述appium+python环境部署,环境部署会新开文章 一.手机连接电脑 1.USB连接电脑和手机,手机上点确认连接(最好用 ...

  7. pythonapp自动化_移动App Appium自动化测试教程Appium+Python 【2018年新】

    资源介绍 资源名称:移动App Appium自动化测试教程Appium+Python [2018年新] 资源目录: 第一章:App自动化测试概述 1-1 Appium自动化课程简介 1-2 课程大纲 ...

  8. appium+Python真机运行测试demo的方法

    2019独角兽企业重金招聘Python工程师标准>>> appium+Python真机运行测试demo的方法 博客分类: 测试 appium+Python真机运行测试demo的方法 ...

  9. appium python自动测试 百度网盘_S35 移动App Appium自动化测试教程Appium+Python 百度云...

    Python视频教程名称:移动App Appium自动化测试教程Appium+Python  Python视频教程 [IT视频教程网] it教程 ( l  w1 F: L" `, v 2 c ...

  10. appium示例代码python_(appium+python)UI自动化_07_UI自动化实例【拼多多搜索商品为例】...

    前言 初学UI自动化的小伙伴,在配置好appium+python自动化环境后,往往不知道如何下手实现自动化.小编在初期学习的时候也有这种疑惑,在此以拼多多搜索为实例,展示下appium是如何实现自动化 ...

最新文章

  1. 使用Docker容器和Java EE进行持续交付
  2. java格式_JAVA语言格式
  3. matlab trapz二重积分函数_matlab二重积分
  4. java封装需要多久_Java对时间操作的一些封装函数
  5. corosycnpacemaker的高可用web集群
  6. 23.Instance Objects
  7. 【转】关于动态库和静态库
  8. IQ推理:P先生和Q先生
  9. 数据仓库-事实表和维度表的设计
  10. Python数据分析之智联招聘职位分析完整项目(数据爬取,数据分析,数据可视化)
  11. Python常用数据分析工具
  12. 登录实例失败,原因: 连接实例 i-wz972sda3z2cf3u3t9a1 (47.112.162.228:3389) 超时: 10 秒,请检查网络是否可达或者白名单设置
  13. 【面试题】将ip地址转换成整数
  14. 修复pd16虚拟机在big sur 的usb无法使用和无法联网问题!
  15. CSS之text-overflow--怎么让多余的文字不显示或者以省略号表示
  16. 3D Human Pose Estimation with Spatial and Temporal Transformers论文笔记
  17. html网页打不开二级网页,教你二级网页打不开怎么解决
  18. 基于Matlab的多线激光中心坐标值提取
  19. SSD报错:The shape of the mask [32, 8732] at index 0does not match the shape of the indexed tenso
  20. PyQt5基本控件之菜单栏QMenuBar

热门文章

  1. HCIE-Security Day3:防火墙特征和组网方式
  2. Kubernetes详解(十八)——Pod就绪性探针实战
  3. ubuntu 字符集与乱码
  4. redis 字符串类型原子性实现方案与memcached-cas原子性性能比较
  5. Acer 4736ZG的Mac之旅
  6. mysql行转列sql函数_(转)行变列SQL语句(MSSQL) - jack - 博客园
  7. python的ctypes模块详解数组_如何使用Python的ctypes和readinto读取包含数组的结构?...
  8. Unity中制作小地图
  9. Java与mysql数据库编程中遇见“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解决办法
  10. lock.lock()使用,与synchronized对比