并发

new RemoteWebDriver(new URL("http://ip:4723/wd/hub"), capabilities);

第一步:

后台启动两个appium:

 

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4723

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4722

 

客户端建立两个session:

 

appium1.4.X+iOS9.X+xcode7.X:

  appium1.4.x+iOS9.x+xcode7.x,这一整套的配置做移动端自动化测试是测试人员常用的测试框架。关于,这一套测试框架的并发问题:基于mac端,启动多台appium服务器会导致appium的运行出错。这是因为多个appium_server的临时文件存放在同一个地址的原因。这个问题的解决思路很简单。只要在每个appiuim_server启动的时候指定一个appium缓存文件存放地址即可。

  例如:

    第一台appium_server启动命令:appium -a 127.0.0.1 -p 4723 -bp 4724 --tmp /usr/desktop/liujian1

    第二台appium_server启动命令:appium -a 127.0.0.1 -p 4725 -bp 4726 --tmp /usr/desktop/liujian2

appium1.6.X+iOS10.X+xcode8.X:

  appium1.6.X+iOS10+xcode8.X,对于iOS10.X的版本来说,苹果公司在测试框架上有了很大的改变。苹果公司放弃了原来的uiautomator那一套东西,改用xcuitest来进行自动化测试。这个重大的改变,导致了基于uiautomator体系的appium测试框架做出了调整。为了适应xcuitest测试框架,appium引进了facebook开发WebDriverAgent(简称wda)。wda在进行WebDriver通信的时候分别指定电脑端和手机端的端口,都是8100。导致了,在mac上同时运行多台appium_server服务的时候会出现异常。这个问题的解决思路是在运行脚步里指定不同的wda端口:

  例如:

    第一个脚本参数setCapability("wdaLocalPort","端口一")

    第二个脚本参数setCapability("wdaLocalPort","端口二")

    注意:两个端口不能相同。

tips:

  如果Android7在做并发的时候如果出现端口异常,指定参数setCapability("systemPort","端口号")

分类: 移动端自动化测试

标签: appium, python, iOS

 

 

两部手机的问题:

http://localhost:8100/inspector

https://blog.csdn.net/Maxdong24/article/details/75532791

//注意三点

//1.端口转发  iproxy 8100 8100

//2.Mac 浏览器中IP要替换成 localhost

//3.如果,没有正常看到层级树。那么保持手机和电脑的连接,重启Mac 、重启手机。

https://www.jianshu.com/p/7bd29362b95f

上面都在做什么呢?

转发方法:iproxy <本地端口> <手机端口> [udid];一台机子时可以不写udid;执行转发方法后控制台显示:waiting for connection

iproxy 8101 8100 a9377a00d4cfdcfede2b96f05275feabe684969a

数据线连接,将WDA服务端安装至两个手机上,

 

WDA客户端1(iphone1)

WDA客户端2(iphone2)

FXSyinergangdeMacBook-Air:/ fxszhaotianliang$ ios-deploy -c --no-wifi

[....] Waiting up to 5 seconds for iOS device to be connected

[....] Found f3b57faeefab54d9c01b20d43d2e7a12d59dea52 (N56AP, iPhone 6 Plus, iphoneos, arm64) a.k.a. 'FXS)楊波 の iPhone' connected through USB.

[....] Found c84bfbfe8a276e620c98d0930ec2d6083b5b55d8 (N61AP, iPhone 6 (GSM), iphoneos, arm64) a.k.a. 'iPhone' connected through USB.

 

 

WDA客户端(xcode:8100)

iproxy 8101 8100 f3b57faeefab54d9c01b20d43d2e7a12d59dea52

iproxy 8100 8100 c84bfbfe8a276e620c98d0930ec2d6083b5b55d8

 

appium服务端1

appium服务端2

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4723

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4722

 

 

appium客户端1

appium客户端2

setCapability("wdaLocalPort","端口一")

setCapability("wdaLocalPort","端口二")

 

 

appium客户端发起两个请求分别设置WDA:端口1  端口2

qppium服务端1,appium服务端2分别接受

 

服务端1 服务端2将指令全部发送至8100端口

进行转发:iproxy 8101 8100 f3b57faeefab54d9c01b20d43d2e7a12d59dea52

 

 

wda:启动两个

cd /node_modules/_appium-xcuitest-driver@2.108.0@appium-xcuitest-driver/WebDriverAgent/

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=f3b57faeefab54d9c01b20d43d2e7a12d59dea52 test

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=c84bfbfe8a276e620c98d0930ec2d6083b5b55d8 test

 

################################通过数据线连接多台设备并发环境搭建过程##############################

缺点:并发量受到usb孔的限制

 

1:多台ios连接mac

 

2:利用ios-deploy查看iphone id列表

idevice_id -l

ios-deploy -c

ios-deploy -c --no-wifi

ios-deploy --id c84bfbfe8a276e620c98d0930ec2d6083b5b55d8 --list_bundle_id

 

3:启动多个appium服务端,分别设置不同端口:

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4723

/Applications/Appium.app/Contents/Resources/app/node_modules/appium/build/lib/main.js --address 0.0.0.0 --port 4722

 

4:启动wda端,分别设置不同iphone id:

cd /node_modules/_appium-xcuitest-driver@2.108.0@appium-xcuitest-driver/WebDriverAgent/

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=f3b57faeefab54d9c01b20d43d2e7a12d59dea52 test

xcodebuild -project WebDriverAgent.xcodeproj -scheme WebDriverAgentRunner -destination id=c84bfbfe8a276e620c98d0930ec2d6083b5b55d8 test

 

5:将wda端口转发至不同端口:(转发方法:iproxy <本地端口> <手机端口> [udid];一台机子时可以不写udid;执行转发方法后控制台显示:waiting for connection)

iproxy 8101 8100 f3b57faeefab54d9c01b20d43d2e7a12d59dea52

iproxy 8100 8100 c84bfbfe8a276e620c98d0930ec2d6083b5b55d8

 

6:测试并发环境wda是否启动成功:

http://localhost:8100/status

http://localhost:8101/status

出现如下字符串表示成功:

{

  "value" : {

    "state" : "success",

    "os" : {

      "name" : "iOS",

      "version" : "12.1.4"

    },

    "ios" : {

      "simulatorVersion" : "12.1.4",

      "ip" : "192.168.43.224"

    },

    "build" : {

      "time" : "Mar  1 2019 15:33:41"

    }

  },

  "sessionId" : "F33CDBBC-6853-4740-BEDF-94AD1E979E93",

  "status" : 0

}

 

 

7:编写测试用例:

线程1:

//启动appium

        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setCapability("platformName","ios");

        capabilities.setCapability("platformVersion","12.1.4");

        capabilities.setCapability("udid","f3b57faeefab54d9c01b20d43d2e7a12d59dea52");

        capabilities.setCapability("deviceName","iPhone 6");

        capabilities.setCapability("bundleId","net.humanbridge.mobile.HBMKarteApp");

        capabilities.setCapability("xcodeSigningId","iPhone Developer");

        capabilities.setCapability("xcodeOrgId","utawareru_kuon@qq.com");

        capabilities.setCapability("wdaLocalPort", "8101");

        driver = new RemoteWebDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

        // 超时设置

        driver.manage().timeouts().implicitlyWait(600,TimeUnit.SECONDS);

 

    线程2:

    //启动appium

        DesiredCapabilities capabilities = new DesiredCapabilities();

        capabilities.setCapability("platformName","ios");

        capabilities.setCapability("platformVersion","12.1.4");

        capabilities.setCapability("udid","c84bfbfe8a276e620c98d0930ec2d6083b5b55d8");

        capabilities.setCapability("deviceName","iPhone");

        capabilities.setCapability("bundleId","net.humanbridge.mobile.HBMKarteApp");

        capabilities.setCapability("xcodeSigningId","iPhone Developer");

        capabilities.setCapability("xcodeOrgId","utawareru_kuon@qq.com");

        capabilities.setCapability("wdaLocalPort", "8100");

        driver = new RemoteWebDriver(new URL("http://127.0.0.1:4722/wd/hub"), capabilities);

        // 超时设置

        driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);

##################################################################################################

################################通过wifi连接多台设备并发环境搭建过程#####################################

如何使用mac监测到统一局域网下的在xcode中已经注册的手机

0:ios数据线连接mac,打开xcode

1:ios设置开机密码

2:”自己的工程“ -> windows -> Device and Simulators ,打开设备和模拟器界面

3:勾选 Connect via network

4:可以看出左侧出现一个网状的球体,这时已经可以进行真机调试了

5:拔掉数据线 ok

6:存在的问题:

     无网络的局域网中,反复认证,安装。。。。[将wda重新编译试试??]

有网络的局域网中,服务起不起来。。。。。[???]

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值