0

我想访问标注视图并对UIAutomation这些视图执行一些操作。我可以单击地图标记/注释,但无法访问标注视图。以下代码用于点击标记:

let marker = app.otherElements.matching(identifier: "mapMarker").element(boundby: 0)
marker.tap();

在此之后,我得到了受人尊敬的标记/注释的标注视图。我需要访问该标注。请就此向我提出建议。

4

2 回答 2

0

您应该在标注结束后创建一个断点,然后键入po print(app.debugDescription)(或简单地po app在 XCode 11 中)lldb以查看 UI 元素的整个层次结构。

找到所需的元素并在代码中进一步访问它。

此外,请考虑以更短的方式重写您的标记代码:

let marker = app.otherElements["mapMarker"].firstMatch

请注意firstMatch在找到第一个元素后中止搜索元素。

Drop firstMatch,如果要检查元素是否唯一

let marker = app.otherElements["mapMarker"]

于 2019-10-09T10:09:40.847 回答
0

与 Smart Monkey 所说的相同,但要根据 ablarg 的评论添加更多代码:

例如:“mapMarker”是元素的可访问性 ID

    let mapMarker = app.maps.otherElements["mapMarker"].firstMatch
    let mapMarkerExists = mapMarker.waitForExistence(timeout: 3)
    if mapMarkerExists {
      mapMarker.tap()
  }

waitForExistence(timeout:)返回一个布尔值,因此如果元素在超时到期之前出现(它找到了元素),则对元素执行操作(点击)。

确保元素已启用可访问性并设置了可访问性 ID。

于 2020-04-19T19:45:44.807 回答