26

Fastlane スナップショットで Xcode UI テストを使用して、Cordova アプリのスクリーンショットを作成したいと考えています。基本的に、私のアプリ全体は単なる Web ビューであるため、すべての Xcode UI テスト ヘルパー メソッドは無関係になり、特定のポイントをタップしたいだけです。たとえばtap(x: 10, y: 10)、そのポイントでタップを生成する必要があります{10px; 10px}

それはおそらく非常に簡単ですが、私はそれを行う方法を理解できません。

ありがとう。

4

4 に答える 4

43

XCUICoordinateAPIで特定のポイントをタップできます。残念ながら、ピクセル座標を参照して「10,10 をタップ」とだけ言うことはできません。実際のビューに対する相対的なオフセットで座標を作成する必要があります。

上記の Web ビューを使用して、相対座標を操作できます。

let app = XCUIApplication()
let webView = app.webViews.element
let coordinate = webView.coordinateWithNormalizedOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()

補足ですが、Web ビューを直接操作してみましたか? app.links["Link title"].tap()orを使用して多くの成功を収めましたapp.staticTexts["A different link title"].tap()これは、私がまとめたデモ アプリで、Web ビューとのやり取りを示しています。


更新: Michal W. がコメントで指摘したように、オフセットの正規化を心配することなく、座標を直接タップできるようになりました。

let normalized = webView.coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0))
let coordinate = normalized.withOffset(CGVector(dx: 10, dy: 10))
coordinate.tap()

正規化されたベクトルに 0,0 を渡し、次に実際のポイント 10,10 を 2 番目の呼び出しに渡していることに注意してください。

于 2016-03-29T14:39:20.223 に答える