2016-09-07 8 views
0

私は、以前は動作していたiOSアプリケーションでいくつかのUIテストを受けましたが、今は失敗します。私はXcode 8のGM版をインストールしました。ここに典型的なコード断片があります。XCUITEST - pressForDurationはXcode 8で壊れていますか?

let inoutbuttonSwitch = app.switches["inOutButton"] 
    let offTapPoint = inoutbuttonSwitch.coordinateWithNormalizedOffset(CGVectorMake(0.25, 0.5)) 
    let onTapPoint = inoutbuttonSwitch.coordinateWithNormalizedOffset(CGVectorMake(0.75, 0.5)) 
    offTapPoint.pressForDuration(0.1) 

問題のUISwitchは、最初はオフになっています。私はスイッチの左半分に座標を、右半分に座標を得ます。

これまでスイッチをオフにすることができました。しかし今、pressForDurationは効果がありませんでした。

これを回避する方法のアイデアはありますか?

+0

私は少しこれについて調査しました。テストを録音して遊んでいるときに、スイッチを変更すると、スイッチ内の2つのボタンの1つがスイッチをオンまたはオフにします。私はまた、スライダーを変更するためにadjust(toNormalizedSliderPosition :)のようなリンゴコントロール用のいくつかの新しいコントロール固有のapiがあるように見えます。しかし、コントロール内のタップまたはドラッグのどちらかにcoordinateWIthNormalizedOffsetを使用すると、もはや機能しません。 UIテストではもはや対話できないカスタムコントロールがいくつかあります。 – RickDeNatale

答えて

0

私もこの問題を抱えていましたが、横向きでしかありませんでした。私は回避策として次の拡張を使用します。

// fix coordinate for landscape bug in Xcode Version 8.0 (8A218a) 
extension XCUICoordinate { 

    func fix() -> XCUICoordinate { 
     let window = XCUIApplication().windows.element(boundBy: 0) 
     let baseCoordinate = window.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0)) 
     switch XCUIDevice.shared().orientation { 
     case .landscapeRight: 
      return baseCoordinate.withOffset(CGVector(dx: self.screenPoint.y, dy: window.frame.width - self.screenPoint.x)) 
     case .landscapeLeft: 
      return baseCoordinate.withOffset(CGVector(dx: window.frame.height - self.screenPoint.y, dy: self.screenPoint.x)) 
     default: 
      return self 
     } 
    } 
} 
関連する問題