【问题标题】:UIAutomation : Failed to authorize rights with status: -60007UIAutomation:无法授权权限,状态:-60007
【发布时间】:2012-07-07 08:09:58
【问题描述】:

所以我在命令行上运行UIAutomation

$ instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/AutomationInstrument.bundle/Contents/Resources/Automation.tracetemplate 
<path-to-your-app>/<appname>.app/ -e UIASCRIPT <path-to-your-js-test-file> -e 
UIARESULTSPATH <path-to-results-folder>

这工作正常,模拟器打开,应用程序运行,但遇到此错误。

Failed to authorize rights (0x2) with status: -60007

我认为这与权限有关。

我该怎么做呢?

【问题讨论】:

  • 你解决过这个问题吗?不幸的是,我目前遇到了同样的问题......
  • @Alexander 我想我修好了。我会发布一个答案。
  • 啊好吧,除了我在这个问题中提到的解决方案之外,您还有其他解决方案吗:stackoverflow.com/a/11416025/925622
  • @Alexander 我通过使用sudo visudo 进行更改并更改乐器的权限来修复它。但是我恢复并采用了您的解决方案,它更好。请为其他人添加此问题的答案:) 谢谢!

标签: iphone objective-c xcode ui-automation


【解决方案1】:

这是我在Instruments via command line - jenkins 发布的答案

还有一篇关于Xcode command line authorization prompt error的博文

我这里再解释一遍:

我做了以下事情:

  • 将 jenkins 用户标记为管理员(不幸的是,似乎没有其他方式 atm)
  • 转到/etc/authorization
  • 搜索密钥system.privilige.taskport
  • 将allow-root的值改为true

    <key>system.privilege.taskport</key>
    <dict>
        <key>allow-root</key>
        <false/> // change to -> <true>
        <key>class</key>
        <string>user</string>
        <key>comment</key>
        <string>Used by task_for_pid(...).
        ...
    </dict>
    

现在我可以使用 jenkins 通过命令行脚本运行我的 UIAutomation-Tests

编辑

为了让 jenkins 识别成功的构建,我没有完美的解决方案,但有以下解决方法:

...
echo "Run instruments simulator"

instruments -t "$ORDER_AUTOMATION_TEST_TEMPLATE_PATH" "$FILE_DEBUG_APP" -e UIASCRIPT "$ORDER_AUTOMATION_TESTSCRIPT_PATH" -e UIARESULTSPATH "$DIRECTORY_INSTRUMENTS_RESULT"

returnCode=0

if test -a "Run 1/Assertion failed.png"; then
echo "failed"
returnCode=1
else
echo "passed"
returnCode=0
fi

rm -fR "Run 1"

rm -fR "instrumentscli0.trace"

echo "Removing app dir"

echo "$FILE_APPLICATIONS"

rm -fR "$FILE_APPLICATIONS"

echo $returnCode

exit $returnCode

编辑 2 检查自动化测试是否成功运行的更好方法:

# cleanup the tracefiles produced from instruments
rm -rf *.trace

##kill simulator afterwards
killall "iPhone Simulator"

##check if failures occured
# fail script if any failures have been generated
if [ `grep "<string>Error</string>" "$WORKSPACE/Automation Results/Run 1/Automation Results.plist" | wc -l` -gt 0 ]; then
    echo 'Build Failed'
    exit -1
else
    echo 'Build Passed'
    exit 0
fi

【讨论】:

  • 您是否将其用作后期构建步骤? Jenkins 是否认可成功的自动化测试?
  • 让 jenkins 识别成功的自动化运行并不像接缝那么容易。我没有找到完美的解决方案,但我有一个解决方法 - 请参阅我的编辑
  • 我添加了一种更好的方法来检查运行是否成功
  • 您先生是救生员。这让我的 Adob​​e Air 测试运行
  • 小牛:安全授权数据库写入 system.privilege.taskport 允许
【解决方案2】:

这可以帮助小牛队和优胜美地:(基于亚历山大的回答)

$ security authorizationdb write system.privilege.taskport allow

【讨论】:

    猜你喜欢
    • 2016-07-11
    • 2021-10-19
    • 2014-06-15
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多