4

こんにちは、私はUITests今勉強しています

質問があります

tableViewCell??でaccessoryViewのタップを検出するにはどうすればよいですか? UITestで

下は私のtableViewCell

ここに画像の説明を入力

詳細クロージャーアクセサリービューのタップを検出したい

このような

app.tables.cells.buttons["FTCellAccesoryIdentifier"].tap()

しかし、アクセサリーはのサブクラスですUIView

だから私はアクセシビリティ識別子キーをcellForRows関数に割り当てます

cell.accessoryView?.accessibilityIdentifier ="FTCellAccesoryIdentifier"

そして私のテスト関数は

私は試します

app.tables.cells.elementBoundByIndex(lastCellIndex).otherElements.elementMatchingType(.Any, identifier: "FTCellAccesoryIdentifier").tap()

しかし、動作しません

UITestsでセルのaccessoryViewをタップすることは可能ですか?

4

2 に答える 2

6

TL;DR

それにかんする...

UITestsでセルのaccessoryViewをタップすることは可能ですか?

... はい。
ただし、そのためにはデフォルトのアクセシビリティ識別子を使用する必要があります。
たとえば、次のようなセルの場合:

ここに画像の説明を入力

UI テスト中に [詳細開示] ボタンをタップします (ここでは「詳細情報」が重要です)。

XCUIApplication().tables.buttons["More Info, Title"].tap()

UI テスト中にセル自体をタップする:

XCUIApplication().tables.staticTexts["Title"].tap()    

長い話:

詳細開示のデフォルトのアクセシビリティ識別子を変更する方法はありません。アップルから

注: 表のセルに、開示インジケーター、詳細開示ボタン、または削除コントロールなどの標準の表ビュー要素が含まれている場合、これらの要素にアクセスできるようにするために何もする必要はありません。ただし、表のセルにスイッチやスライダーなどの他の種類のコントロールが含まれている場合は、これらの要素に適切にアクセスできることを確認する必要があります。

で詳細開示のアクセシビリティ識別子/ラベルを設定しようとした時点でcellForRowは、cell.accessoryViewnil です。なんで?繰り返しますが、Appleから:

付属品を見る

討論

このプロパティの値が nil でない場合、UITableViewCell クラスは、テーブル ビューの通常の (デフォルト) 状態でアクセサリ ビューに指定されたビューを使用します。それは、accessoryType プロパティの値を無視します。提供されるアクセサリ ビューは、フレームワークが提供するコントロールまたはラベル、またはカスタム ビューにすることができます。セルの右側にアクセサリ ビューが表示されます。

アクセサリ ビューは、定義するまで nil です。:/

カスタム識別子を本当に設定したい場合は、「独自の」詳細開示 (カスタマイズされたUIViewなど) を提供する必要があります。例(説明用):

cell.accessoryView = UIView(frame: CGRectMake(0, 0, 20, 20))
cell.accessoryView?.backgroundColor = UIColor.blueColor()
cell.accessoryView?.accessibilityIdentifier = "FTCellAccesoryIdentifier"
于 2016-05-19T14:38:46.563 に答える