我已将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 :(得分:1)
从调试输出的外观来看,没有指定链接包含在哪个视图中就可以了 - 链接可能不在你认为它在里面的视图中。应该没问题:
app.links["Privacy Policy"].tap()
我看到你对坐标的思考,但是你想首先得到元素的坐标对象,然后在XCUICoordinate
上使用withOffset
方法,因为它采用具有绝对值的向量。 coordinateWithNormalizedOffset
采用具有相对值的向量,因此在您的示例中,您将尝试点击元素宽度的261倍的点,位于元素原点的右侧。
答案 1 :(得分:0)
UITextViews中的链接有以下奇怪的行为:
但是我们可以使用link元素的框架来访问链接。 您可以使用以下扩展名:
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
}
}