我的UISearchBar之一上有一个UIViewController
但是UISearchBar默认没有可访问性标识符,因此我尝试使用“用户定义运行时属性”定义手动可访问性标识符。

ios - 在UITestCase期间使用可访问性标识符来标识UISearchBar-LMLPHP

但是在编写UITestCase期间,我无法使用“用户定义运行时属性”来访问或识别UISearchBar。但是我无法使用标识符访问它。我总是必须使用不想使用的占位符文本,因为它在支持“多语言”时会引起问题。

我已经参考了有关此问题的堆栈溢出答案,但没有一个满足我的要求。

请帮助提供解决方案。
谢谢。

最佳答案

在应用程序中,当我使用“用户定义运行时”属性将accessibilityLabelUISearchBar设置为MySearchBar时,如果查看应用程序的UI层次结构,则会看到以下内容:

Attributes: Application, 0x604000198050, pid: 18393, {{0.0, 0.0}, {414.0, 736.0}}, label: 'MyApp'
Element subtree:
 →Application, 0x604000198050, pid: 18393, {{0.0, 0.0}, {414.0, 736.0}}, label: 'MyApp'
    Window, 0x6000001993d0, Main Window, {{0.0, 0.0}, {414.0, 736.0}}
      Other, 0x604000199a50, traits: 8589934592, {{0.0, 0.0}, {414.0, 736.0}}
        Other, 0x600000197aa0, traits: 8589934592, {{0.0, 20.0}, {414.0, 56.0}}, identifier: 'MySearchBar'
          Image, 0x604000198390, traits: 8589934596, {{0.0, 0.0}, {414.0, 76.0}}
          SearchField, 0x60000019a4e0, traits: 146031248384, {{8.0, 30.0}, {398.0, 36.0}}

那应该使您对如何找到搜索栏有所了解。首先搜索类型为other的元素,该元素具有您在搜索栏中设置的标识符,然后查找此类型为searchBar的元素的子元素。
let searchField = XCUIApplication().otherElements["MySearchBar"].searchFields.firstMatch
searchField.tap()
searchField.typeText("Hello")

关于ios - 在UITestCase期间使用可访问性标识符来标识UISearchBar,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48395090/

10-13 09:36