2011-07-19 6 views
3

物事が読み込まれている間、ルートテーブルビューにアクティビティインジケータがあります。私はインジケータの存在をテストしようとしていますが、UIAActivityIndi​​catorを取得できないようではありません。また、app要素のツリー階層のどこでも見つけることができます。インジケータはルートテーブルビューのサブビューですので、その要素ツリーの一部として見えるはずですが、どこにも表示されません(物理的には画面上以外)。iOS UIAutomation UIAActivityIndi​​cator

javascriptからアクティビティインジケータを取得するために必要な他の魔法?

do

答えて

2

これは、iOSでページが読み込まれるのを待つために作成した機能です。関数のコードが実行される前に、オプションのpreDelayを渡すことができます。これは、activityIndi​​catorオブジェクトが30秒間nullになるのを待つこと(半分毎秒、60回試行)です。私はオブジェクトをタップするときにこのコマンドを包含するようにUIAutomationツールを拡張しました。

this.wait_for_page_load = function(preDelay) {   
    if (!preDelay) { 
     target.delay(0); 
    } 
    else { 
     target.delay(preDelay); 
    } 

    var done = false; 
    var counter = 0;  
    while ((!done) && (counter < 60)) { 
     var progressIndicator = UIATarget.localTarget().frontMostApp().windows()[0].activityIndicators()[0]; 
     if (progressIndicator != "[object UIAElementNil]") { 
      target.delay(0.5); 
      counter++; 
     } 
     else { 
      done = true;   
     } 
    } 
    target.delay(0.5); 
} 
+0

恐ろしいまでの待ち時間、ありがとう。 – EdG

+0

このコードは私が使用していたものと少し異なりますが、同じ間違った結果が出ます。上の正確なコードでは、アクティビティインジケータが画面上で回転していても、progressInidicatorは常にnil([object UIAElementNil])です。再び、アクティビティインジケータがアクティブでスピンしている時点で、アプリのlogElementTreeはNOアクティビティインジケータを示します。それを表示するためにUIActivityIndi​​catorを作成するために必要な魔法はありますか?アクセシビリティラベルの有無にかかわらず試しました。 – EdG

2
target.delay(1); 

target.pushTimeout(10); 

target.frontMostApp().mainWindow().activityIndicators()["In progress"].waitForInvalid() == true; 

target.popTimeout(); 

これは、アクティビティインジケータが表示されるまでに1秒を待ちます。その後、タイムアウト値が10秒で無効になるのを待ちます。インジケーター名を「進行中」に置き換えてください。

0

は、コードの以下の行は、私の問題を解決し

while(target.frontMostApp().mainWindow().activityIndicators()["In progress"].isEnabled()); 

活動の指標は無効となります(ただし、その私たちのビューから削除インジケータの後に無効になるために1〜2秒以上を要する)

関連する問題