2016-12-28 4 views
0

enter image description hereXCTest UITextview内のUrl(リンク)をタップする方法は?

ソースコードにaccessibilityIdentifierを追加しました。 そしてでした:

let privacypolicyurl = app.tables.textViews["privacyPolicy"] 
privacypolicyurl.tap() 

、別の方法:

let privacypolicyurl = 
    app.tables.textViews.containing(.link,identifier:"privacy Policy").element 
privacypolicyurl.tap() 

が続いpoでデバッグしようとしたが をapp.linksし、この参照してください。

リンク0x618000173140:特徴:8589934594を、{ {261.7,592.3}、{74.7,17.5}}、ラベル: 'プライバシーポリシー' }

だから、私は残念ながら、これらのどれも私のために働いていない

let cooridnate = 
    app.tables.textViews["privacyPolicy"].coordinate(withNormalizedOffset: CGVector(dx: 261.7, dy: 592.3)) 
cooridnate.tap() 

を思い付きました。把握してください。

答えて

0

デバッグ出力の外観から、リンクが含まれているビューを指定しなくても問題ありません。内部にあると思われるビュー内にリンクが存在しない可能性があります。

app.links["Privacy Policy"].tap() 

私は座標とのあなたの思考を参照してください、それは、ベクターがかかるため、あなたは、最初の要素のオブジェクトを座標取得し、 XCUICoordinatewithOffsetメソッドを使用するとよいでしょう:それはちょうど行うには問題ないはずです絶対値で。 coordinateWithNormalizedOffsetは、相対値を持つベクトルをとるので、あなたの例では、要素の原点の右側に、要素の幅の261倍の点をタップしようとしています。

+0

これらの画面座標またはビュー座標はありますか?例を教えてもらえますか? –

+0

絶対値はスクリーン座標です。画面の左上隅が原点(0、0)です。 – Oletha

0
UITextViews内

リンク以下の奇妙な行動があります)

  • link.coordinate( "イベント合成する" 中にエラーを提供する(ゼロ値
  • link.accessibilityFrameを返す)

    • link.tapを( )はゼロの値を返します

    しかし、リンク要素のフレームを使用してリンクにアクセスできます。 次の拡張子を使用できます。

    import XCTest 
    
    extension XCUIElement { 
    
        public func tapFrameCenter() { 
         let frameCenterCoordinate = self.frameCenter() 
         frameCenterCoordinate.tap() 
        } 
    
        func frameCenter() -> XCUICoordinate { 
         let centerX = self.frame.midX 
         let centerY = self.frame.midY 
    
         let normalizedCoordinate = XCUIApplication().coordinate(withNormalizedOffset: CGVector(dx: 0, dy: 0)) 
         let frameCenterCoordinate = normalizedCoordinate.withOffset(CGVector(dx: centerX, dy: centerY)) 
    
         return frameCenterCoordinate 
        } 
    } 
    
  • 関連する問題