2015-12-17 15 views
5

W mojej aplikacji na iOS dodałem testy interfejsu użytkownika, w których muszę sprawdzić, czy przycisk paska nawigacyjnego jest włączony/wyłączony w innym momencie.Jak sprawdzić, czy przycisk paska nawigacyjnego jest włączony/wyłączony w teście interfejsu użytkownika w systemie iOS?

Obecnie używam:

XCUIElement* saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"]; 


XCTAssertEqual(saveButton.hittable, YES); 

to jednak zawsze zwraca TAK. Test .exists również zwraca TAK.

Czy ktoś wie, jak przeprowadzić prawidłowy test?

Odpowiedz

3

Więc z pomocą @InsertWittyName znalazłem rozwiązanie:

UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"]; 
XCTAssertFalse(saveButton.enabled); 
+2

Nie wierzę, że to działa, ponieważ uzyskujesz dostęp do 'UIBarButtonItem'. W twoim przykładzie 'saveButton' jest w rzeczywistości' XCUIElement' i jest zgodne z protokołem 'XCUIElementAttributes', który ma właściwość' enabled'/'isEnabled'. Możesz przetestować to drukowanie '[[saveButton class] description]'. Twój przykład działa tylko z powodu luzu dynamicznej wysyłki Objective-C; to jednak nie zadziała w Swift. Zasadniczo, zmień 'UIBarButtonItem * saveButton =' na 'id saveButton =' lub 'XCUIElement * saveButton =', a przekonasz się, że funkcjonalność jest taka sama. –

4

Można uzyskać rzeczywisty składnik interfejsu użytkownika za pośrednictwem właściwości value.

Dzięki temu można sprawdzić, czy jest włączona, czy nie.

Coś jak:

UIBarButtonItem *saveButton = self.app.navigationBars[@"TSSIDAddCardView"].buttons[@"Save"].value; 
XCTAssertTrue(saveButton.enabled); 
+2

własnością .value zwraca ciąg znaków na drodze, nie obiekt UIBarButtonItem –

+0

Jednak BOOL saveButton = self.app.navigationB ars [@ "TSSIDAddCardView"]. Przyciski [@ "Zapisz"]. włączone - to wygląda na działające –

+0

To nie działa w ogóle dla mnie (używając Xcode 8.3.3). Kiedy próbuję to zrobić, otrzymuję błędy takie jak _ "błąd: właściwość" włączone "nie znaleziono na obiekcie typu" identyfikator "" _ lub _ "błąd: wykonanie zostało przerwane, powód: Próba usunięcia z pola niepoprawnego obiektu ObjC lub wysłania to nierozpoznany selektor. "_ ponieważ wynik z przycisków ... [@" Zapisz "]. wartość" to '__NSCFConstantString'. –

Powiązane problemy