2016-12-28 18 views
0

enter image description hereXCTest UITextview에서 Url (Link)을 탭하는 방법은 무엇입니까?

소스 코드에 accessibilityIdentifier를 추가했습니다. 는 않았고 :

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

그리고 또 다른 방법 :

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

그런 다음 포 디버깅하는 노력이 을 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 ("이벤트 합성하여"중에 오류를 제공 (0 값
  • link.accessibilityFrame을 반환)

    • link.tap을 ()는 0 값을 반환합니다.

    하지만 링크에 액세스하기 위해 링크 요소의 프레임을 사용할 수 있습니다. 다음 확장자를 사용할 수 있습니다.

    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 
        } 
    }