2013-04-13 12 views
7

Sto provando a eseguire alcuni test automatici in Robotium. Ho il seguente codice nel mio programma che imposta un menu di opzioni:Fare clic sul menu della barra delle azioni Elementi in Robotium

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) { 
    com.actionbarsherlock.view.MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.layout.logoutmenu, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 

provo a fare clic sul menu a Robotium utilizzando il codice:

solo.sendKey(Solo.MENU); 
solo.clickOnView(solo.getView(R.id.share)); //share is the id of the menu item 

Tuttavia il mio test non riescono a causa con l'errore :

View is null and therefore cannot be clicked. 

ho anche provato ad utilizzare il codice di sotto del quale non è riuscito:

solo.clickOnView(solo.getView(R.id.logoutmenu)); 
solo.clickOnMenuItem("Share My Artists"); 
+0

stai eseguendo i tuoi test su Android 2.3? – atermenji

+0

@atermenji no su 4.1 – AndroidEnthusiast

risposta

18

se si eseguono test di Robotium su Android 4.0 e versioni successive, prendere in considerazione l'utilizzo di solo.clickOnActionBarItem().

+0

Solo per le persone che si interrogano sul parametro corretto, è "int id" quindi non inserire {0, 1, ...} ma R.id.your_id. ;) – zatziky

+0

Voglio fare clic sul menu di overflow sulla barra delle azioni e fare clic sulla voce di impostazioni. solo.clickOnActionBarItem (0x1); ha funzionato prima ma ora non funziona, penso che qualcosa sia cambiato non so cosa, appcompat action bar. Sto testando usando apk che non ho accesso a R.id.x. –

0

ho potuto farlo funzionare su tutti gli SDK, utilizzando questo:

View ab = _solo.getCurrentActivity().findViewById(R.id.action_bar); 
ArrayList<View> views = _solo.getViews(ab); 
for (int i = 0; i <views.size(); i++) { 
    if (views.get(i).getClass().getName().contains("ActionMenuPresenter")) { 
     _solo.clickOnView(views.get(i)); 
     _solo.waitForText(SOME_TEXT); 
    } 
} 
0

Basta farlo:

solo.sendKey(Solo.MENU); 
solo.clickInList(5); 

5 è la posizione basta cambiare alla posizione della vostra voce di menu il primo è 1, il secondo 2 ecc.

Problemi correlati