在实际应用中需要对多个机型并行测试,节省时间

多机测试的思路

启动多个appium server与多台机器交互(android和ios均可)
 
注意:一定要使用node安装appium的命令行,使用appium命令启动多个服务
启动命令时指定server端口号,以及与客户端交互的各项端口号
 
以下命令都是后台启动的,使用的mac的后台启动方式[ nohup 命令 &],如果是windows机使用[start /b 命令]

Android多机的server启动命令

startservercmd = "nohup appium  --session-override -a " + address + " -p " +Appium_port +" -bp "+bootstrap_port
+" --selendroid-port "+selendroid_port+" --chromedriver-port " +chromedriver_port+" -U "+deviceid+" "+" --no-reset &"
 
各项说明:
address:启动server的地址,如果不指定为0.0.0.0
Appium_port:启动的server的端口号,默认4723
bootstrap_port:与高版本(4.2及以上)android机交互的端口号,默认3724
selendroid_port:与低版本(4.2以下)android机交互的端口号,默认8080
chromedriver_port:与chrome浏览器交互的端口号,默认9516
deviceid:设备的id(adb devices查看)
 
注意:android多机启动server一定要指定-U参数,否则在windows上运行时会抛错
 
iOS多机的server启动命令
startservercmd = "start /b appium --session-override -a " + address + " -p " + Appium_port+" --webdriveragent-port “+webdriveragent_port
各项说明:
address:启动server的地址,如果不指定为0.0.0.0
Appium_port:启动的server的端口号
webdriveragent_port:与iOS客户端交互的webdriveragent的端口号,默认8010

多进程启动server命令,客户端进行连接

通过多进程进行多机测试
定义一个递增增量,每个进程都在基础端口号上增加这个递增增量,保证每个server的端口号不会冲突
 
下面为多进程的代码,devices为连接的手机的deviceid列表,testsuit()为要执行的case入口
 
if __name__ == "__main__":
if devices == []:
log().log("先插入手机再进行测试谢谢!当前需要的手机系统:"+optionsystem)
sys.exit() if len(devices) == 1:
testsuit()
else:
from multiprocessing import Process
port_d=1#各个端口号的差值 for deviceid in devices:
t=Process(target=testsuit, args=(port_d,))
t.start()
port_d =port_d+1
 
说明:port_d就是上面上的定增增量,通过这个变量我们可以加到基础端口号上(基础端口号自己写到一个公共变量里就好,比如appium server用4723)
 
启动了服务器,就可以通过不同的appium server端口号连接到服务器了
webdriver.Remote('http://127.0.0.1:'+appiumport+'/wd/hub', desired_caps)
 
注意:在windows中启动多进程一定要把多进程的连接写到【if __name__ == “__main__”:】下面,否则进行webdriver启动连接时会被拒绝

appium多机并行测试的更多相关文章

  1. appium 真机测试问题 出现 instruments crashed on startup

    1.appium 真机测试的时候 instruments crashed on startup,必须在真机上打开UI Automation 在设置里: Developer->Enable UI ...

  2. appium通过WiFi连接真机进行测试

    http://www.th7.cn/Program/Android/201507/514602.shtml appium通过WiFi连接真机进行测试   2015-07-24 19:43:07CSDN ...

  3. 【转2】Appium 1.6.3 在Xcode 8 (真机)测试环境搭建 经验总结

    Appium 1.6.3 在Xcode 8 (真机)测试环境搭建经验总结 关于 Appium 1.6.3 在Xcode 8, 1真机上环境搭建问题更多,写此文章,供大家参考,让大家少走弯路. 在开始i ...

  4. python+appium+真机测试

    appium环境搭建 操作系统: Windows 10 被测平台: Android真机 appium服务器: appium Desktop appium客户端: python-client 测试的AP ...

  5. IOS-Appium 自动化测试——环境配置及模拟器、真机跑测试

    在MAC环境下配置IOS的appium的自动化测试环境,主要包含三个部分: 一.环境配置 1.安装homebrew(homebrew可以提供MAC OS无法提供的很多套件) ruby -e " ...

  6. Appium 在 Android UI 测试中的应用

    原文地址:https://blog.coding.net/blog/Appium-Android-UI Android 测试工具与 Appium 简介 Appium 是一个 C/S 架构的,支持 An ...

  7. U3D协程Coroutine之WWW与Update()的并行测试

    using System.Collections; using UnityEditor; using UnityEngine; using UnityEngine.UI; /************* ...

  8. TestNG并行测试

    并行(多线程)技术在软件术语里被定义为软件.操作系统或者程序可以并行地执行另外一段程序中多个部分或者子组件的能力.TestNG允许我们以并行(多线程)的方式来执行测试.这就意味着基于TestNG测试组 ...

  9. 如何搭建基于C#和 Appium 的 Android自动测试环境

    本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果想做手机端的自动化测试,Appium是首选的测试框架,因为网上使 ...

随机推荐

  1. 《算法》第六章部分程序 part 4

    ▶ 书中第六章部分程序,包括在加上自己补充的代码,利用后缀树查找最长重复子串.查找最大重复子串并输出其上下文(Key word in context,KWIC).求两字符串的最长公共子串 ● 利用后缀 ...

  2. python学习笔记_week22

    note 知识点概要 - Session - CSRF - Model操作 - Form验证(ModelForm) - 中间件 - 缓存 - 信号 内容详细: 1. Session 基于Cookie做 ...

  3. Android Data Binding Library

    Data Binding Library Data Binding Library是一个支持库,允许您使用声明格式(而不是编程)将布局中的UI组件与应用程序中的数据源绑定. 布局通常在调用UI框架方法 ...

  4. django之Q

    def _add_q(self, q_object, used_aliases, branch_negated=False, current_negated=False, allow_joins=Tr ...

  5. xsync

    shell  小工具,用于集群搭建: xsync脚本基于rsync工具,rsync 远程同步工具,主要用于备份和镜像.具有速度快.避免复制相同内容和支持符号链接的优点,它只是拷贝文件不同的部分,因而减 ...

  6. template.js 数据渲染引擎

    template.js 数据渲染引擎 template.js是一款JavaScript模板引擎,用来渲染页面的. 原理:提前将Html代码放进编写模板 <script id="tpl& ...

  7. Mysql中select的正确姿势

    引言 大家在开发中,还有很多童鞋在写查询语句的时候,习惯写下面这种不规范sql select * from table 而不写成下面的这种规范方式 select col1,col2,...,coln ...

  8. span标签 宽度无效解决方案

    完美的解决方案 下 面代码的CSS定义完美解决了span的宽度设置问题. 由于浏览器通常对不支持的CSS属性采取忽略处理的态度, 所以最好将display:inline -block行写在后面,这样在 ...

  9. 跨域(一)——CORS机制

    Ajax是严格遵守同源策略的,既不能从另一个域读取数据,也不能发送数据到另一个域.但是,W3C的新标准中CORS(Cross Origin Resource Sharing)推进浏览器支持这样的跨域方 ...

  10. shell命令中用source 和sh(或者bash)执行脚本的区别,以及export的作用

    用户登录到Linux系统后,系统将启动一个用户shell,我们暂且称这个shell为shell父. 在这个shell父中,可以使用shell命令或声明变量,也可以创建并运行shell脚本程序. 当使用 ...