2016-05-23 13 views
10

Vorrei scrivere alcuni test dell'interfaccia utente sulla mia applicazione Android per poter acquisire schermate automatiche.Nessun ID per il mio test dell'interfaccia utente Android

La mia applicazione è scritta con React-Native.

Per poter scrivere i miei test ha bisogno di conoscere la risorsa-id del mio componente, ma come si può vedere in questo screenshot non riesco a vedere qualsiasi risorsa-id con ui Automator Viewer in questa app di esempio React-Native.

Look this picture.

Vorrei sapere se c'è un modo per dare alcuni ID ai miei componenti in modo da poter scrivere qualche test o se c'è un altro modo per selezionare i miei componenti.

Nota: sto provando a scrivere Espresso Test.

risposta

0

Sì, c'è! È possibile passare un puntello testID a qualsiasi componente che implementa gli oggetti di scena <View /> come documented here.

testid stringa

Utilizzato per individuare questo punto di vista nei test end-to-end.

Vedere anche questo molto informativo blogpost su UITest in React Native. Si tratta di test di iOS, ma la parte javascript sarà la stessa per Android.

0

Prima di tutto, l'ID di ogni componente UI di oggetti Android deve essere definito nella cartella di risorse (res) come XML di layout (è necessario assicurarsi di averlo definito nei tag giusti) e ottenere gli ID in Android seguire la procedura:

1. Launch Android Studio, Click on "Android Device Monitor" icon next to "SDK Manager" 

2. Connect your device and launch the application 

3. Select your device name from the list of devices on the left panel 

4. Click on Dump "View Hierarchy for UI Automate" 

5. Now you can hoover over any view on thde device dump and can see Resource-d in the node details in the right column. 

Nota: si può anche prendere screenshot

+1

Questo non si applica alle app scritte in react-native, che non usano il layout xml. – ArthurDenture

0

1) per prima cosa se il progetto si può andare al layout e aggiungere id a questi componenti e poi prendere screenshot usando il visualizzatore di uiautomator troverai la tua risorsa id

2) Se l'opzione 1 non è possibile (è altamente improbabile che ciò accada) è ancora possibile testarlo come dal tuo screenshot posso vedere solo una finestra di edittext, quindi usando uiauatomator puoi testarlo sulla base della classe. Qui di seguito è il codice:

private static UiDevice mDevice; 


func(){ 

mDevice = UiDevice.getInstance(getInstrumentation()); 


UiObject xyz=new UiObject(new UiSelector().**getClass**(android.widget.EditText)); 


xyz.click(); 


xyz.setText("abcdef"); 
} 

// Non sono sicuro che i suoi getClass() o GetClassName() controllo sia un'opzione

// xyz.click() è necessaria in quanto in uiautoamtor non sarà in grado di testo da destra

in una casella di testo fino a quando ea meno che non sia selezionato

6

l'testID funziona solo su iOS, e non è mappato alla risorsa-id in Android.

È possibile specificare un accessibilityLabel nel componente.In uiautomatorviewer si presenta come content-desc

per essere cross-platform, è necessario specificare sia:

<Text style={styles.welcome} accessibilityLabel="MyId" testID="MyId"> 
    Welcome! 
</Text> 

È quindi possibile cercare utilizzando qualcosa come WebDriver con la tilde selectorbrowser.waitForExist("~MyId")

+0

quale framework di test è questo? Non riesco a trovare il browser in Appium solo driver. – liminal18

+0

questo sta usando [http://webdriver.io] (http://webdriver.io) che guida Appio – eleventy

Problemi correlati