2012-04-13 44 views
0

我們只支持橫向模式,並且由於某種原因,當我們推送到不同的視圖控制器,旋轉應用程序,然後彈出時,我們的UISearchBar會佔用整個導航條甚至把標題推向LHS。所以我們最終將UISearchBar包裝在UIToolbar中,似乎解決了這個問題。在UIAutomation的UINavigationBar中訪問UIToolbar中的UISearchBar

因此,在被推入堆棧的第二個視圖控制器中,我們在UINavigationBar的UIToolbar中有一個UISearchbar。我似乎無法訪問它。我想編寫一個腳本來輸入一些搜索項並點擊這些項,這樣當我們的數據模型發生變化時,我們不會崩潰。

我遇到的問題是我不確定如何訪問它。我假設

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

可用於不只是rootViewController的屏幕上。所以我試着去做

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

但是這個dow不起作用。我假設navigationBar()。buttons()[---]不會提供任何用途,因爲它不是我嘗試訪問的按鈕。當我做

window.logElementTree(); 

我看到:

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

所以我能看到的導航欄,我需要和工具欄在其下方,但不知道如何得到它。

我也試過這個

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

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

在我的代碼的viewDidLoad,當我創建工具欄,我有這樣的:

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

但我從來沒有得到過的LogMessage表明我有權利的項目。我堅持嘗試只使用屏幕並點擊它?謝謝!

+1

您是否嘗試過在樂器編輯器中記錄自動化事件並找出訪問代碼的方式? – brainray 2012-04-14 21:37:28

回答

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"]) 
相關問題