在 iOS 台设备上进行并行测试

Parallel Testing on iOS Devices

当尝试在多个 iOS 设备上并行测试时,会出现两个问题:

  1. 工具,Mac开发者工具只会运行一个实例。意味着一次只能进行一个测试 运行。

  2. iOS-Webkit-Debug-Proxy,在单个端口 (27753) 上被硬编码为 运行,因为它假设只有一个 instruments

在我开始之前,根据我的调查,我只能使用 appium 的 git 源代码实现并行 iOS 测试。当从 npm install 工作时,它不起作用。


  1. 对于 运行 多个工具实例,您必须在创建 iOS appium 节点时设置临时目录。

为此使用这些参数:

--tmp /tmp/ios/--tmp /tmp/ios6/


  1. iOS-Webkit-Debug-Proxy 可以通过在终端中设置REMOTE_DEBUGGER_PORT变量在不同的端口上运行。

REMOTE_DEBUGGER_PORT=27754

您还需要为 appium 节点使用 --webkit-debug-proxy-port 参数。

--webkit-debug-proxy-port 27754


我编写了一个脚本来启动集线器、两个 android 节点、两个 iOS 节点并放入了一些程序来记录错误。

pkill elenium
pkill java
pkill ios_webkit_debug_proxy
pkill node

java -jar ../libs/selenium-server-standalone-2.46.0.jar -role hub -port 4444 > logs/log_hub.txt 2>&1 &
if [ $? = 1 ]; then
    echo hub
    exit 1
fi

appium --nodeconfig /Path/to/androidOne.json -p 4823 -bp 5724 --chromedriver-port 9515 > logs/log_androidOne.txt &
if [ $? = 1 ]; then
    echo node 1
    exit 1
fi
appium --nodeconfig /Path/to/androidTwo.json -p 4723 -bp 5723 --chromedriver-port 9516 > logs/log_androidTwo.txt &
if [ $? = 1 ]; then
    echo node 2
    exit 1
fi

node appium --session-override --nodeconfig /Path/to/iPod.json --tmp /tmp/ios/ -p 4623 --webkit-debug-proxy-port 27753 --safari > logs/log_iPodTouch.txt &
if [ $? = 1 ]; then
echo node3
exit 1
fi

node appium --session-override --nodeconfig /Path/to/iPad.json --tmp /tmp/ios6/ -p 4523 --webkit-debug-proxy-port 27754 --safari > logs/log_iPad.txt &
if [ $? = 1 ]; then
echo node4
exit 1
fi

sleep 5
REMOTE_DEBUGGER_PORT=27753
./ios-webkit-debug-proxy-launcher.js -c UDID:27753 -d > logs/log_iwdpl.txt &
if [ $? = 1 ]; then
    echo iwdpl
    exit 1
fi
REMOTE_DEBUGGER_PORT=27754
./ios-webkit-debug-proxy-launcher.js -c UDID:27754 -d > logs/log_iwdpl2.txt &
if [ $? = 1 ]; then
echo iwdpl2
exit 1
fi

该脚本首先终止任何预先存在的进程,如果您正在 运行 其他 java 事物,请小心终止所有 java 进程。

希望这对您有所帮助, 利亚姆