2016-06-27 3 views
0

セルが画面からスクロールしたかどうかを判断しようとしているXCUIのテストケースがあります。しかし、私は、セルが画面上にいったんセルが画面からスクロールされているかどうかを調べる方法XCUI

XCTAssertTrue(app.tables.cells.StaticText["person"].exists) 

を画面オフ細胞スクロール使用している場合場合でも、静的なテキストはこれも

let window = app.windows.elementBoundByIndex(0) 
let element = app.tables.cells.staticTexts["person"] 
XCTAssertTrue(CGRectContainsRect(window.frame, element.frame)) 
私のために動作しません、常に検索可能であることに気付きました

セルが画面からスクロールしても、2番目のテストが合格になります。

テーブルセルが画面上に表示されなくなったかどうかを判断する方法はありますか?

+0

「人物」セルは複数ありませんか?このアサーションは、セルが実際に画面外にある場合は失敗するはずです。 –

+0

複数のセルがあります。これは、基本的に、セル表内の名前のリストです。各セルには、人の基本情報とタップされた追加情報が表示されます。また、一度スクロールしたテキスト「人」を示す画面上の他の場所はありません。 – Giovanni

答えて

0

この問題の解決策になるだろうが、私はこの

func tapOnSpecifiedPointOnList(cellNumber: Float) { 
    let cellSpacing: Float = 75 
    let xCoordinate: Float = 25 
    let yOffSet: Float = 90 
    let yCoordinate = yOffSet + (cellSpacing * cellNumber) 
    let pointToTap = CGPointMake(CGFloat(xCoordinate), CGFloat(yCoordinate)) 
    map().tapAtPosition(pointToTap) 
} 
tapOnSpecifiedPointOnList(0) 
let startingCell = app.cells.otherElements["callout"].elementBoundByIndex(0).label 
app.cells.otherElements["callout"].swipeUp() 
for i in 0...numberOfCells { 
    tapOnSpecifiedPointOnList(i) 
    let nextCell = app.cells.otherElements["callout"].elementBoundByIndex(0).label 
    XCTAssertNotEqual(startingCell, nextCell) 
} 

のような機能を使用したことですセルがタップされると、以前は存在しなかった別のコールアウトが開かれました。この吹き出しオブジェクトにaccessibilityIdを付けることで、セルから情報を取得し、それをタップした他のセルと比較することができました。したがって、画面上の可能なすべてのセルの場所をタップし、元のものと一致する吹き出しがない場合、それはオフスクリーンになっているに違いありません。

0

hittable API on XCUIElementを使用して、要素が存在し、画面上に存在するかどうかを判断します。セルで使用する必要があります。

注:hittableは、一種の不格好なく、作品、スウィフト3のisHittable

let cell = app.tables.cells.containingType(.StaticText, identifier: "person").elementBoundByIndex(0) 
XCTAssertTrue(cell.hittable) 
+0

悲しいことに、これは私のためには機能しません。たとえそれが画面外にある間にセルをタップしてテストに失敗しようとしても、セルに自動スクロールして、タップします。 – Giovanni

+0

テストしようとしている動作は何ですか?スクリーンがオフのときにヒットテーブルのセルがfalseを返しますか? – Oletha

+0

私はセルが画面から消えたかどうかを調べようとしています。私は、リストの下部がロードされているかどうかを確認することで回避策を見つけることができました。なぜなら、上部がオフスクリーンになった場合に下部がロードされるからです。しかし、いったんリストがロードされると、それはそのようにとどまり、上のセルが実際にオフスクリーンになったかどうかを判断することを非常に困難にするように見える。 – Giovanni

関連する問題