持续集成 使用 jenkins 启动脚本,实现将 appcrawler 多设备同时跑,写了个脚本但是有问题,新手求助

MLL · 2019年12月24日 · 最后由 Alex.Z 回复于 2019年12月30日 · 2347 次阅读

问题:
1. 虽然说是两个设备都同时启动了,但是是 A 设备先运行,一会儿就不运行了,B 设备才开始运行
2. 一个设备运行过程中的截图会在两个文件夹中都保存,就搞的乱七八糟的
麻烦帮忙看看我的脚本有什么问题

脚本:
#!/bin/bash
rm -rf solartest/*

device_num=adb devices | grep "device"$ | wc -l
for ((i=1;i<=$device_num;i++))
do
port=expr 4724 - ${i}
echo $port
appium -p $port --session-override --log-timestamp --local-timezone &
echo "start"
device_serialname=adb devices | grep "device"$ | awk '{print $1}' | sed -n "${i}p"
echo $device_serialname
java -jar appcrawler-2.4.0-jar-with-dependencies.jar --capability "udid=${device_serialname},appPackage=com.fenbi.android.solar,appActivity=activity.RouterActivity" -c xystAndroid.yml -u $port --output solartest/$device_serialname/ &
done
wait

共收到 2 条回复 时间 点赞
MLL #2 · 2019年12月27日 Author

求解答

appium 启动起码要占用两个端口,如启动 4723,4724 就会被 bootstrip 占用, 你那循环启动就有问题了,
除非也指定-bp 端口,如:
appium -a 127.0.0.1 -p 4723 -bp 4724 --session-override --command-timeout 120

uiautomator2 貌似还要再 caps 用不同的 'systemPort':8208,# 默认 8200, 取 8200-8209 间的数
关于 systemPort 的官方说明:
systemPort used to connect to appium-uiautomator2-server, default is 8200 in general and selects one port from 8200 to 8299. When you run tests in parallel, you must adjust the port to avoid conflicts.

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册