2015-12-17 34 views
5

私のiOSアプリケーションでは、UIテストを追加しました。別の時点でnavigationBarボタンが有効/無効になっているかどうかを確認する必要があります。iOSのUIテストでnavigationBarボタンを有効/無効にする方法は?

現在、私が使用している:

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


XCTAssertEqual(saveButton.hittable, YES); 

をしかし、これは常にYESを返します。 .existsテストはYESも返します。

適切なテストを行う方法を知っている人はいますか?

答えて

3

だから@InsertWittyNameの助けを借りて、私は解決策が見つかりました。

だから、あなたは自分のXCUIElement* saveButtonでこれを行うことができます。

のObjective-C

XCTAssertEqual(saveButton.enabled, YES); 

スウィフト

XCTAssertEqual(saveButton.isEnabled, true) 
+2

'UIBarButtonItem'へのアクセス権があるため、これは動作しているとは思われません。あなたの例では、 'saveButton'は実際にはまだ' XCUIElement'です。これは 'enabled' /' isEnabled'プロパティを持つ 'XCUIElementAttributes'プロトコルに準拠しています。この '' print ['saveButton class] description ''をテストすることができます。あなたの例は、Objective-Cの動的ディスパッチの緩みのためにのみ機能します。しかし、それはSwiftではうまくいきません。基本的に、 'UIBarButtonItem * saveButton ='を 'id saveButton ='または 'XCUIElement * saveButton ='に変更すると、機能は同じです。 –

4

valueプロパティで実際のUIコンポーネントを取得できます。

これで、有効になっているかどうかを確認できます。以下のような

何か:

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

.VALUE財産、道で文字列を返しますUIBarButtonItemオブジェクトではありません –

+0

ただし、BOOL saveButton = self.app.navigationB [@ "TSSIDAddCardView"]。buttons [@ "Save"]。これは動作しているようです。 –

+0

これは私のためには全く機能しません(Xcode 8.3.3を使用)。これを実行しようとすると_ 'エラー:プロパティ' enabled 'がタイプ' id 'のオブジェクトに見つかりませんでした "_または_"エラー:実行が中断されました、理由:無効なObjCオブジェクトを参照解除しようとしましたそれは認識できないセレクタです。 "_ buttons {@" Save "}。value'の結果が' __NSCFConstantString'であるためです。 –

関連する問題