Appium grid ----appium 的并行化测试

知道selenium grid2 可以提供并行化。
可是怎么把它应用到Appium上啊,研究了一个礼拜一筹莫展。
希望大家能给点儿思路,谢谢~
并行化做的好痛苦啊!!

----------目前的一些进展,初步实现并行化---------
---希望对大家有所帮助---
步骤:
1.下载 selenium-server-standalone-2.41.0.jar
地址:http://selenium-release.storage.googleapis.com/index.html?path=2.41/
2.启动配置nodeconfig.json
3.启动命令行启动hub(已经安装了java jdk)java -jar selenium-server-standalone-2.41.0.jar -role hub
4.启动appium server
5.能在 http://localhost:4444/grid/consolehub上注册的node中找到
6.执行测试脚本。

detail:
1.如何配置nodeconfig.json
感谢 @seveniruby 在3楼提供重要思路---修改nodeconfig文件。
感谢 @arnox 在9楼提到

Grid node config file:
https://github.com/appium/appium/blob/master/docs/en/grid.md

ps:官方的文档grid.md中"host": <host_name_appium_server_or_ip-address_appium_server>,没有加上双引号的,估计是它的疏漏。应改为"host": "<host_name_appium_server_or_ip-address_appium_server>"

感谢 @vigossjjj 在19楼的nodeconfig.json源码

2.测试脚本修改
self.driver = webdriver.Remote(
command_executor='http://*.*.*.*:4723/wd/hub',
desired_capabilities={
'browserName': '',
'device': 'iPhone Simulator',
'platform': 'Mac',
'version': '7.1',
'app': app_remote
})
ps:command_executor 中 *.*.*.*写的是要执行此测试用例的node(appium server)的ip地址.

存在的问题:
1.hub端不知道如何获取node的测试信息
2.如果执行的测试用例触发app漏洞,如何定位app出错位置 愁人啊!
希望大家给点思路。

本帖已被设为精华帖!
共收到 42 条回复
662
lucktail 1楼 · 9月前 喜欢

需要对Appium的源码进行更改吗?

662
lucktail 2楼 · 9月前 喜欢
104
seveniruby 3楼 · 9月前 喜欢

nodeconfig参数可以做到. 不过比较坑的是, 因为appium会固定占用2个端口, 所以几个pc理论上只能用来同时控制一个手机.
所以为了避免冲突, 你需要调整对应的端口数字, 4723和4724. 这两个端口在参数里面貌似不能完全修改, 所以还需要修改代码
当然不知道新版本怎么样了

662
lucktail 4楼 · 9月前 喜欢

#3楼 @seveniruby 虽然不是很懂,不过先谢谢。。……^_^
我想法是一个Server(hub) 然后 有多个Client,每个Client控制一个手机或者模拟器。n个client分别执行不同的测试用例......以达到并行测试的目的。
所以不是很明白“几个pc理论上只能用来同时控制一个手机”是什么意思?
我是用appium.dmg安装的,不是通过命令行,这样还可以修改nodeconfig参数 或者修改代码吗?(是不是最好修改了代码后通过命令行安装?)
并行化这个问题纠结了好久,实在是不知道从何下手,谢谢了~

662
lucktail 5楼 · 9月前 喜欢

是这个文件吗?可是找不到它啊
104
seveniruby 6楼 · 9月前 喜欢

#4楼 @lucktail 写错了, 是理论上一个pc只能控制一个手机, 修改代码才能实现一个pc控制多个手机.
在grid模式下, 你可以认为appium server就变成了grid里面的client. 这块内容appium设计的不太好, 希望后续会有所改善.

104
seveniruby 7楼 · 9月前 喜欢

下个月等1.0放出来, 我会做个完整的grid模型给大家做参考.

662
lucktail 8楼 · 9月前 喜欢

#7楼 @seveniruby 嗯~ 太好了!
因为马上就是毕设的中期检查,所以想抓紧把并行化做出来。我只是想实现一台PC一部手机就好。如果appium server是 grid里的client ,那hub的角色由谁来充当呢?

C322baafcdb45a1d3f09efcdfa1590c3
arnox 10楼 · 9月前 喜欢

Grid Hub 你需要自己启用啊,和selenium Grid2.0 hub启用一样的

104
seveniruby 11楼 · 9月前 喜欢

#10楼 @arnox 是的 因为selenium和appium在协议上一致, 所以grid可以通用

209
vigossjjj 12楼 · 9月前 喜欢

#11楼 @seveniruby 不用改代码 我一直用的好好的 #11楼 @seveniruby

104
seveniruby 13楼 · 9月前 喜欢

#12楼 @vigossjjj 你是通过参数配置修改端口的吗

662
lucktail 14楼 · 9月前 喜欢

#9楼 @arnox 太好了!! 我学习一下

662
lucktail 15楼 · 9月前 喜欢

#10楼 @arnox 恩恩,因为以前没有接触过selenium 所以都不知道从何下手。我去看看selenium grid2.0 thx~

662
lucktail 16楼 · 9月前 喜欢

#12楼 @vigossjjj 你好,我尝试了一下编写nodeconfig.json文件,我已经启动了hub端口默认4444.但是启动appium server的时候报错。你的nodeconfig文件是怎么写的啊。


报错信息为:

好难过啊!

662
lucktail 17楼 · 9月前 喜欢

报错问题已解决:代码第17行 把127.0.0.1 改为“127.0.0.1” 也就是加上双引号。
ps:官方的文档grid.md中是没有加上双引号的,估计是它的疏漏。

110
lihuazhang 18楼 · 9月前 喜欢

#17楼 @lucktail 给他提 pr

209
vigossjjj 19楼 · 9月前 喜欢

#17楼 @lucktail @seveniruby 多手机连接肯定没问题的,用了半年了.....

662
lucktail 20楼 · 9月前 喜欢

#19楼 @vigossjjj 嗯 谢了~ 那个“browserName”:“IOS_TestAnget1”是什么意思啊 我的“browserName”是空着的

104
seveniruby 21楼 · 9月前 喜欢

#19楼 @vigossjjj 我是之前看appium的google groups里面提到, 说是因为端口会导致一个pc只能同时连接一个手机端. 你有没有看过, 如果是同时连接多个手机的时候, 端口是如何分配的? adb forward的端口会根据你配置的启动端口一直+1吗

209
vigossjjj 22楼 · 9月前 喜欢

#20楼 @lucktail 那个是自定义的字符串 连接多个设备执行时我为了区分多个设备 #21楼 @seveniruby #20楼 @lucktail

209
vigossjjj 23楼 · 9月前 喜欢

#21楼 @seveniruby Android的没研究,iOS的本身一台机器也只能实例一个instrument也就是一个iphone 我是多台Mac分布执行 #21楼 @seveniruby

104
seveniruby 24楼 · 9月前 喜欢

#23楼 @vigossjjj 晕 他的问题是一个电脑要连接多个手机吧

301
yujie 25楼 · 9月前 喜欢

我也在弄这块,请问楼主实现了吗?

301
yujie 26楼 · 9月前 喜欢

#1楼 @lucktail 我也在弄这块,请问楼主实现了吗?

209
vigossjjj 27楼 · 9月前 喜欢

#23楼 @seveniruby 你可以试试用多个端口启动多个服务 一个手机指一个server端口

104
seveniruby 28楼 · 9月前 喜欢

服务器本森会开2个端口, 4723和4724, 麻烦的是4724必须和手机里面的app启动的端口保持一致, 所以估计还是需要代码. appium估计也会考虑这个问题吧

662
lucktail 29楼 · 8月前 喜欢

#26楼 @yujie 嗯 就是按照大家回复里的方法 修改nodeconfig文件 然后 开了一个selenium-grid的hub 基本是实现了。但还有一个问题,就是hub怎么收集node的测试结果

355
benlooking 30楼 · 7月前 喜欢

#29楼 @lucktail 请问,nodeconfig文件在哪里修改啊。/Users/me/nodeconfig没有啊。你那边实现了连接多台手机了么?

662
lucktail 31楼 · 7月前 喜欢

#30楼 @benlooking 可以自己新建一个nodeconfig.json文件。 目前一台电脑只能连接一部手机

355
benlooking 32楼 · 7月前 喜欢

#31楼 @lucktail 恩,我新建了文件,我要怎么用他呢。node . -V --nodeconfig /path/to/nodeconfig.json不行样。。只能连接一部手机么,那请问grid有什么用处呢?

29bea2982cf098795915166d7a907376
cosyman 33楼 · 6月前 喜欢
  1. 不知道你说的节点测试信息是什么,http://localhost:4444/grid/api/proxy?id=nodeip:nodeport 可以获取这个节点的一些信息。2.测试请求首先发到hub,然后hub再分发到具体的node,这个过程可以从日志里找到。当然可能不一定能匹配到你运行的测试用例,不知道在Capabilities里加个唯一id可否来标记。
1372
wangcityboy 34楼 · 4月前 喜欢

#1楼 @lucktail 请问楼主,这个问题解决了没?我也想知道。

1401
xiang2743 35楼 · 2月前 喜欢

这个问题,有人知道怎么解了吗

1372
wangcityboy 36楼 · 1月前 喜欢

#3楼 @seveniruby 请问如何做到一个PC机对多个终端设备进行测试?代码应该如何改,nodeconfig.json文件应该怎么配置?

{
  "capabilities":
      [
       {
          "platformName":"iOS",
          "platformVersion":"7.1.2",
          "deviceName":"iPhone4s",
          "app":"com.ios.app"
        }
      ],
  "configuration":
  {
    "cleanUpCycle":2000,
    "timeout":30000,
    "proxy":"org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "url":"http://0.0.0.0:5000/wd/hub",
    "host":"0.0.0.0",
    "port":5000,
    "maxSession":10,
    "register":true,
    "registerCycle":1000,
    "hubPort":4444,
    "hubHost":"0.0.0.0"
  }
}
104
seveniruby 37楼 · 1月前 喜欢

#36楼 @wangcityboy 新版本不需要修改代码了, 通过参数可以设置不同的端口了. iOS的我不熟悉, 你问其他同学吧. 买不起iphone

1372
wangcityboy 38楼 · 1月前 喜欢

#37楼 @seveniruby 请问怎样设置参数?

5ac3cba62c0ab382b3a9cd883beba05e
hzy 39楼 · 26天前 喜欢

#38楼 @wangcityboy 请问你弄出来了么?我配置了两份config.json,然后启动了两个appium服务,但是还是不能并行测试啊,mac instrument只能同时操作一个设备。。和直接配置appium启动端口一样,没法实现并行测试。。

5ac3cba62c0ab382b3a9cd883beba05e
hzy 40楼 · 26天前 喜欢

#23楼 @vigossjjj 请问分布执行怎么弄的?最近也在搞这个,发现mac只能同时操作一个设备,根本无法并行测试啊。。

5ac3cba62c0ab382b3a9cd883beba05e
hzy 41楼 · 26天前 喜欢

#32楼 @benlooking 同感,grid也无法实现ios的并行测试啊。。。

5ac3cba62c0ab382b3a9cd883beba05e
hzy 42楼 · 26天前 喜欢

#6楼 @seveniruby 请问如何修改代码能实现一台mac同时连接多个设备呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值