从XCUIElement

时间:2015-10-23 18:13:36

标签: xcode7 ui-testing xcode-ui-testing

如果我正在尝试编写不依赖于标签或其他特定于价值元素的通用测试,我该如何获取该信息?就像我要点击一个tableview单元格,稍后需要一些信息。喜欢识别哪个细胞被窃听。我怎样才能使用XCUIElement从中获取标签?

3 个答案:

答案 0 :(得分:1)

您可以从XCUIElement中提取的信息仅限于XCUIElementAttributes protocol中的信息。其中最值得注意的是identifiervaluetitle

您可以在生产代码中通过identifier设置-accessibilityIdentifiervalue属性可以从几个不同的路径设置,但它通常是控件的活动状态。例如,选择器的选定元素。

您可以尝试使用辅助功能检查器查看元素上已设置的内容,然后使用查询来查找该元素。

答案 1 :(得分:0)

乔回答了正确的答案,但他遗漏了如何实际获得他指定的属性的值。

让我们假设我想获取为我的应用程序的导航栏打印的字符串

enter image description here

我做的是为导航栏创建了一个XCUIElement:

XCUIApplication *app = [[XCUIApplication alloc] init];
XCUIElement *navBarTitle = [app.navigationBars elementBoundByIndex:0];

然后我在创建navBarTitle对象后设置断点,并使用调试控制台打印出navBarTitle对象的详细信息:

print out

您在调试控制台的打印输出中看到有一个名为 标识符

要从该对象中提取该字符串,我使用以下方法创建了一个NSString对象:

NSString *nameofuser = [navBarTitle valueForKey:@"identifier"];

我使用了XCUIElement navBarTitle,然后使用了 valueForKey 方法。 valueForKey提取密钥标识符的字符串值。

您可以在此处阅读此方法: NSKeyValueCoding

valueForKey是解锁这个问题的答案的关键....双关语意图:)

答案 2 :(得分:0)

您可以提取一些状态,例如accessibilityIdentifier,isHitable,value或者其他,但遗憾的是,您无法设置/更改任何这些状态。显然你无法检测是否已经敲击了XCUIElement。这是ui测试fw的一个很大的限制。