branch10480’s blog

Topics that I've learned.

iOSアプリ開発自動テストの教科書 を読んでいく 〜 20 〜

UI要素を操作する

タップ、長押し

XCUITestには操作するためのメソッドが複数用意されている。

宣言 補足
func doubleTap()
func twoFingerTap()
func tap(withNumberOfTaps numberOfTaps: Int, numberOfTouches: Int タップ回数とタッチ回数を指定する
func press(forDuration duration: TimeInterval) 指定した秒数分長押し
func press(forDuration duration: TimeInterval, thenDragTo otherElement: XCUIElement) 特定のUI要素までドラッグ

press については 長押し対象のUI要素がスクロールしないと見えない箇所にある場合、事前にスクロールしてから長押しをしてくれる。

ジェスチャー(スワイプ、拡大・縮小、回転)

ジェスチャーは以下の通り定義されている。

宣言 用途
func swipeLeft()
func swipeRight()
func swipeUp()
func swipeDown()
func pinch(withScale scale: CGFloat, velocity: CGFloat) 2本指を使っての操作
func rotate(_ rotation: CGFloat, withVelocity velocity: CGFloat) 対象のUI要素の回転

スワイプ操作では速度や距離は指定できない。そのため、求めている位置までスクロールできるとは限らない点に注意すること。

velocityとはジェスチャーにおける速度を表す。

withScaleに指定する値は 0 ~ 1 の場合はピンチイン、1以上の場合はピンチアウトになる。

ジェスチャーメソッドはベストエフォートなので、指定した値が必ずしも動作保証されない点に注意する必要がある。

Slider、Pickerを操作する

Slider、Pickerの操作には adjust メソッドを使用する。

宣言 用途
func adjust(toNormalizedSliderPosition normalizedSliderPosition: CGFloat) Sliderの操作
func adjust(toPickerWheelValue pickerWheelValue: String Pickerの操作

Sliderについては指定した引数の値になるかはベストエフォートであるため、必ずしも値が指定したものになるとは限らない。

Pickerでは指定した文字列がPickerの値として存在していれば選択される。

> 次回に続く