在 iOS 台设备上进行并行测试
Parallel Testing on iOS Devices
当尝试在多个 iOS 设备上并行测试时,会出现两个问题:
工具,Mac开发者工具只会运行一个实例。意味着一次只能进行一个测试 运行。
iOS-Webkit-Debug-Proxy,在单个端口 (27753) 上被硬编码为 运行,因为它假设只有一个 instruments
在我开始之前,根据我的调查,我只能使用 appium 的 git 源代码实现并行 iOS 测试。当从 npm install 工作时,它不起作用。
- 对于 运行 多个工具实例,您必须在创建 iOS appium 节点时设置临时目录。
为此使用这些参数:
--tmp /tmp/ios/
、--tmp /tmp/ios6/
等
- 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 进程。
希望这对您有所帮助,
利亚姆
当尝试在多个 iOS 设备上并行测试时,会出现两个问题:
工具,Mac开发者工具只会运行一个实例。意味着一次只能进行一个测试 运行。
iOS-Webkit-Debug-Proxy,在单个端口 (27753) 上被硬编码为 运行,因为它假设只有一个 instruments
在我开始之前,根据我的调查,我只能使用 appium 的 git 源代码实现并行 iOS 测试。当从 npm install 工作时,它不起作用。
- 对于 运行 多个工具实例,您必须在创建 iOS appium 节点时设置临时目录。
为此使用这些参数:
--tmp /tmp/ios/
、--tmp /tmp/ios6/
等
- 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 进程。
希望这对您有所帮助, 利亚姆