2015-12-14 100 views
-1

當試圖在並行測試多的iOS設備有出現的兩個問題:並行測試

  1. 儀器,Mac開發工具將只運行一個實例。意味着一次只能運行一次測試。

  2. IOS的​​Webkit內核調試代理,是硬編碼到一個端口(27753)上運行,因爲它假定只有一個儀器

+0

我回答我的問題,因爲我張貼的問題,存在正是這種目的的功能。這個想法是,如果你有自己解決的問題,但是覺得其他人會讓你提出問題,然後回答它。如果將來有人問這個問題,他們可以得到答案。似乎是一個合乎邏輯和有用的事情,不是嗎? –

+0

不,我所指的功能是「你想回答這個問題」複選框,它可以讓你編寫答案,然後將問題和答案一起發佈,這就是我所做的。 –

+0

但爲什麼提出這個問題呢? StackOverflow不是教程網站... –

回答

2

我開始之前的例子,從我的調查,我只能使用appit的git源代碼實現並行iOS測試。從npm安裝時,它不起作用。


  1. 要運行工具的多個實例,您必須在創建您的iOS appium節點時設立臨時目錄。

爲此使用這些參數:

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


  1. IOS的​​Webkit的調試代理可以在不同的運行通過在終端中設置REMOTE_DEBUGGER_PORT變量。

REMOTE_DEBUGGER_PORT=27754

您還需要使用--webkit調試代理端口參數爲appium節點。

--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的東西。

希望這有助於 利亞姆

+0

非常有用..謝謝! – Vaibhav