2015-10-20 11 views
23

要素が表示されているかどうかを.hiddenプロパティによって確認したいのですが、新しいXcode 7 UIテストのものを使用して有効な方法が見つかりません。要素がXCode 7で表示されているかどうかのテストUITest

私はmyelement.existsmyelement.hittableで試しましたが、期待通りに動作していないようです。私は彼らがhiddenプロパティと一緒に働くと思います。隠された要素は存在してはならず、ヒット可能ではありません...しかし、これは現在の動作ではありません(私はexistsの動作を理解できますが、隠された要素はヒット可能なIMOではありません)。

"隠された"プロパティ値を確認する別の方法はありますか?

答えて

23

Xcode 7.1 Beta 3以降、UIテストでは現在要素の可視性の検証はサポートされていません。 Appleに必要な注意を喚起するためにレーダーを提出することをお勧めします。

Xcode 7.1でこの問題が修正されました。 hittableは要素が正しいかどうかをチェックします。

+2

これはXcode 7.1では動作しません。いくつかのコントロールを動的に非表示に更新し、後でテストします。コントロールが明らかに隠されていても、常にtrueを返します。 – Alex

+0

Xcode 7.2ヒットテストが非表示の要素に対して正しく動作していない場合 –

+0

Xcode 7.2.1ヒットテストが隠し要素に対して正しく動作していない – san

3

XCUIElement.hittableは(私は、視認性のために、いくつかのUIButtonの要素をチェックしています、私の特定のテストケースに)私の作品 -

2

次のコードは私のために働いても、それはそれを行うには正しい方法ではありませんかなり確実。あなたは次のように過去のコードをすることができ、テストの終わりに :私はhittable同意

while ([app.staticTexts matchingIdentifier:@"accesibilityId"].count > 0) { 
     sleep(1); 
    } 
0

は常にボタン(スウィフト2.0、XCodeの7.2)

のために動作しません。私はもしボタンが表示されていることを発見ボタンの中だけで見つけることができますが、ボタンが隠されていれば、それもstaticTextsのタグであることがわかります!

XCTAssertFalse(app.buttons["Log out"].exists && app.staticTexts["Log out"].exists) // This button is visible (hidden = false) 
XCTAssert(app.buttons["Log in"].exists && app.staticTexts["Log in"].exists) // This one is hidden 

ハッキーですが、ボタンで動作します。 Appleはちょうど私がXcodeの7.3で迅速にUIをテストしていると私は、ラベルが非表示にしたりせず、彼らは両方の仕事されているかどうかをテストするため.hittableと.existsの両方を使用して.hidden.visible.hittableに沿って.exists

5

1)を導入すべきです。いずれの方法でも結果に合致することを確認するために、「真」と「偽」をテストします。

スタティックテキストが "トラック情報"で、最初にアプリケーションが読み込まれたときに非表示に設定されたラベルを持っています。その後、ボタンを押してラベルを表示し、ラベルが表示された後の結果です。

//テストが

let trackInfoLabel = app.staticTexts["Track info"] 
XCTAssertEqual(trackInfoLabel.exists, true) 

XCTAssertEqual(trackInfoLabel.hittable, true) 

//テストが

XCTAssertEqual(trackInfoLabel.exists, false) 
XCTAssertEqual(trackInfoLabel.hittable, false) 

//テストが

​​

//テストが

XCTAssertEqual(trackInfoLabel.exists, false) 
XCTAssertEqual(trackInfoLabel.hittable, false) 
を失敗を渡すを渡すに失敗します

文字ボタンを押してラベルを隠すと、すべての結果が反対になります。これは、label.hidden設定の両方のプロパティ(hittableとexists)が動作することを確認します。

2)要素が隠されているかどうかを調べる別の方法は、element.frame.size.width == 0 || element.frame.size.height == 0

関連する問題