有没有办法在Instruments(iOS)UI Automation中连续运行多个Scripts?

时间:2013-08-01 07:06:00

标签: instruments ui-automation ios-ui-automation automated-tests xcode-instruments

每当我尝试通过Apple在Instruments(iPhone模拟器)中进行UI自动化时,我都会运行几个不同的脚本。问题是,当前一个脚本结束时,我需要坐下来运行每个脚本。如果我还需要坐下来运行每个脚本,我想知道自动化的用途是什么。

任何人都可以通过一次点击告诉我(或者是否有)运行多个脚本的方法?并且不需要为每个脚本运行记录按钮?

5 个答案:

答案 0 :(得分:7)

我有同样的问题。根据{{​​3}}:“您可以根据需要创建任意数量的脚本,但一次只能运行一个。”

所以我试图通过导入将所有脚本捆绑成一个:

# import "test1.js"
# import "test2.js"

将此保存为单独的脚本(例如“testAll.js”)并运行此脚本。

答案 1 :(得分:4)

是的!!!您可以使用所有脚本运行测试套件。 例如,您可以为应用程序中的每个屏幕编写脚本,并在创建测试套件以运行所有脚本之后,或者如果您只想运行几个脚本。 您需要为每个脚本使用sentencie #import“script1.js”。 示例:

//import all scripts that you need to include
#import "screen1.js"
#import "screen2.js"
#import "screen3.js"

function Main(){

// Tests:       
     TestScreen1(); // this method is on "screen1.js"
     TestScreen2(); // this method is on "screen2.js"
     TestScreen3(); // this method is on "screen3.js"

 };

// call to function Main 

Main();

答案 2 :(得分:3)

您可以从命令行运行它们 - 将所有脚本放在一个文件夹中并创建一个sh脚本

示例:

FILES=`find <<insert script location>> -iregex '.*\(js\)' `
for script in $FILES
do
    echo "Processing $script

instruments -t /Applications/Xcode.app/Contents/Applications/Instruments.app/Contents/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate /"<<insert app location>>/App.app" -e UIASCRIPT $script -e UIARESULTSPATH "<<insert Result path>>" >> "results.txt"

done

答案 3 :(得分:2)

您可以从命令行启动仪器,因此您可以使用bash脚本以批处理模式运行测试。像这样:

#!/bin/bash    
instruments -t  "$UIA_TRACETEMPLATE_PATH" "$APP_PATH" -e UIASCRIPT "$SCRIPT1_PATH" -e UIARESULTSPATH "$OUTPUT1_PATH"
instruments -t  "$UIA_TRACETEMPLATE_PATH" "$APP_PATH" -e UIASCRIPT "$SCRIPT2_PATH" -e UIARESULTSPATH "$OUTPUT2_PATH"
#etc

这种方法的优点是测试是分开的,因为bash脚本在每次测试之前重启仪器。即使您的第一次测试中止执行将继续下一次测试。

答案 4 :(得分:1)

据我所知,UIAutomation是一个单一流程应用程序,无法并行运行多个测试/设备。

您可以在此处阅读更多内容:Instruments automation trace only allows one target connection?

此外,我尝试在不同用户下运行自动化,但没有成功。您可以使用虚拟机或几个mac mini来完成任务。