0

UIAutomation を使用してアプリをテストできるようにしたいと考えています。私が直面している問題は、ネットワークからデータの割り当てをダウンロードする必要があることです。NSNotification が送信されるまで UIAutomation スクリプトを一時停止する方法はありますか、それともdelay()データをダウンロードするのに必要だと思うよりも長くする必要がありますか? データを再ダウンロードする必要がない場合があるため、一定時間待機することは望ましくありません。

ヘルプ/リンクは大歓迎です。

4

2 に答える 2

2

UIAutomation には と呼ばれる気の利いた機能がありwaitForInvalid()ます。データのダウンロードが完了した後に表示されて削除される進行状況バーまたは何かがある場合は、それを使用できます。

これは、関数がすぐに戻るため、ユーザーが既にデータを持っていて、UI を表示しない場合にも機能します。

于 2012-06-04T23:54:37.483 に答える
1

ジャックの答えはほとんどの詳細で機能しますが、ネットワーク作業の一部はバックグラウンド キューで発生し、進行状況インジケーターはありません。

CGRectZeroUIView を要素に貼り付けるヘルパーを作成することになりました。この要素が有効になるまで待つことができます。思ったほどきれいではありませんが、動いています。

waitForElementNamed: function(name, element, timeout) {
  timeout = timeout || 10
  log("Waiting for " + timeout + " seconds")
  var valid = false
  for (var i = 0; i < timeout; i++) {
      UIATarget.localTarget().pushTimeout(.5)
      valid = element.elements()[name].isValid()
      if (valid) {
      log("Found Element " + name)
      return
      }
      UIATarget.localTarget().popTimeout()
      target.delay(.5)
  }
  if (!valid) {
      failed("Wait Timedout [" + timeout + "]")
  }
}

きれいではありませんが、機能します。

于 2012-06-12T16:56:09.993 に答える