2016-04-13 4 views
0

NSTextViewでのテキスト操作を含むUIテストがあります。これは正常に動作しますが、試験の一つで、テキストの束が入っているキャッシュXCUIElement(単一要素への複数の呼び出しのパフォーマンスを向上させます)

let sqlTextViewTextView = sqlWindow.textViews["SQL text view"] 

、その後、一度に一つの文字を削除した:私は経由XCUIElementを設定電流です。

sqlTextViewTextView.typeText(substring) 

// Delete backwards until we are clear 
while(true) 
{ 
    let targetString:String = sqlTextViewTextView.value as! String 
    if(0 == targetString.characters.count) 
    { 
     break; 
    } // End of we have no targetString 

    sqlTextViewTextView.typeKey(XCUIKeyboardKeyDelete, modifierFlags:.None) 
} // End of we have text entered 

sqlTextViewTextViewのすべての呼び出しは、要素を検索するクエリを評価し、これは、非常に遅くなってしまいます。

このタイトなループ中にクエリをスキップする要素を「キャッシュ」できる方法はありますか?

テストコードは(恐らく書きにくい)Swift 2.迅速な特定の質問ではないので、私はそのようなものとしてタグ付けしませんでした。

+0

textViewを見つけるのに本当に時間がかかりますか、これをログに記録していますか、どれくらいかかりますか?どのインデックスがtextViewに対応しているか知っているなら、 'elementBoundByIndex:'を使ってみることができます。これはより速い検索でなければなりません – Alex

答えて

1

階層を介したクエリは、瞬時に近いものにする必要があります。テストのランタイムは、ターゲット・アプリがアクション(この場合、XCUIKeyboardKeyDeleteを押すたびに)をとるたびにアイドリングするまでUIテスティング・アプリケーションのロジックが影響を受けている可能性が非常に高いです。

ループの要素を計時することでこれを分離することができます。クエリ自体にかなりの時間がかかると私は驚いていますが、もしそうなら、あなたのアプリケーションのビュー階層がどんなものかを教えてください。膨大な数のビュー要素がある場合、階層全体をトラップするのではなく、より特定のセレクタセットを使用するようにクエリが高速化される可能性があります。

関連する問題