2012-04-13 2 views
0

私たちは風景モードのみをサポートしています。何らかの理由で、別のView Controllerにプッシュしてアプリを回転させてポップすると、UISearchBarはナビゲーションバー全体タイトルもLHSにプッシュします。そこでUIToolbarでUISearchBarをラップしてしまい、問題を修正するように見えました。UIAutomationのUINavigationBarでUIToolbarのUISearchBarにアクセス

スタックにプッシュされる2番目のビューコントローラでは、UINavigationBarのUIToolbarにUISearchbarがあります。私はそれにアクセスできないようだ。私はいくつかの検索項目を入力してそれらの項目をクリックするスクリプトを作成したかったので、データモデルが変更されたときにクラッシュすることはありません。

私が抱える問題は、アクセス方法がわかりません。私はこれを仮定しています

UIATarget.localTarget().frontMostApp().mainWindow() 

は、rootViewControllerだけではない画面でも使用できます。だから私はしようとする

UIATarget.localTarget().frontMostApp().mainWindow().navigationBar().toolBar().tap(); 

しかし、それは動作しません。私は、navigationBar()。buttons()[---]は、私がアクセスしようとしているボタンではないので、使用しないと仮定しています。

UIAWindow 
-> UIANavigationBar 
-> -> UIAButton 
-> -> UIAToolbar // (I'm trying to show the disclosure triangles in how it looks like in the log. 

は、だから私はその下に私が必要navigationBar、およびツールバーを見ることができますが、それを取得する方法がわからない:私は

window.logElementTree(); 

を行うと、私は参照してください。

UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 160, 44)]; 
toolbar.accessibilityIdentifier = @"Toolbar"; 

しかし、私は、私は右のアイテムを持っていることを示すLogMessageにを取得することはありません:

はまた、私は、ツールバーを作成するとき、私はこれを持って私のコードののviewDidLoadではこの

var navBarElements = window.navigationBar().elements(); 

for (var elem in navBarElements) { 
    if (elem["Toolbar"]) { 
     UIALogger.logMessage("toolbar");    
    } 
} 

を試してみました。私はちょうど画面を使用してそれをタップしようとしていますか?ありがとう!

+1

オートメーションイベントをInstrumentsエディタに記録し、そのようにアクセスコードを調べようとしましたか? – brainray

答えて

0

は、オブジェクトのUIAElementArrayを返す関数を使用しようとしたがUIAElement

UIATarget.localTarget().frontMostApp().mainWindow().navigationBar().toolBars()[<LabelOfToolBarOrIndexStartingFromZero>].tap(); 

かところでさえ

UIATarget.localTarget().frontMostApp().mainWindow().navigationBars()[<NameOfNavigationBarOrIndexStartingFromZero>].toolBars()[<LabelOfToolBarOrIndexStartingFromZero>]].tap(); 

if (elem["Toolbar"]) 

を交換しようとしません

if (elem["object UIAToolbar"]) 
関連する問題