首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode UI测试[xcode7-beta6] -在使用可访问性标签时断言实际的标签值

Xcode UI测试[xcode7-beta6] -在使用可访问性标签时断言实际的标签值
EN

Stack Overflow用户
提问于 2015-08-31 15:27:00
回答 4查看 14.8K关注 0票数 20

问题其实很简单:

在此对象上使用可访问性标签时,是否有方法从特定标签(例如UILabel)中断言显示的值?

据我所见,示例中的所有断言(例如XCTAssertEquals),无论是来自WWDC谈话还是博客,都只检查一个元素是否存在于像XCTAssertEquals(app.staticTexts["myValue"].exists, true)这样的查询中,或者表中的单元格数是否正确XCTAssertEquals(app.tables.cells.count, 5)。因此,在避免可访问性标签时,可以检查一个对象是否显示了某个值,而不是哪个对象/元素。当使用可访问性标签时,它剥夺了我对显示的值进行查询的机会,因为app.staticTexts["myValue"]现在将无法交付结果,但app.staticTexts["myAccessibilityLabel"]会命中。

假设我想测试我的“向表添加新的单元格”功能,我可以测试列表中确实添加了一个新的单元格,但是我不知道新的单元格是添加在列表的顶部、底部还是中间。

对我来说,当涉及到UI测试时,一种检查特定元素是否具有特定值的简单方法应该是一种无需考虑的方法。

可能,由于缺少文档,我可能忽略了显而易见的事实。如果是的话,就告诉我。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-07-23 09:28:23

当您设置UILabel的.text值时,一定要设置它的.text属性。然后在UITest中,您可以像下面这样测试可访问性值:

代码语言:javascript
复制
    let labelElement = app.staticTexts["myLabel"]
    ...
    XCTAssertEqual(labelElement.value as! String, "the expected text")
票数 24
EN

Stack Overflow用户

发布于 2015-09-01 13:39:02

我想你问了几个不同的问题,所以我会试着逐一回答每个问题。

  1. 在此对象上使用可访问性标签时,是否有方法从特定的标签(例如UILabel)断言显示的值?

总之,没有。UI测试的工作方式是连接到可访问性API,因此您只能在此基础上查询对象。但是,您可以检查某些元素(例如控件)的-value属性。这是用来测试开关是开的还是关的。请注意,使用可访问性API,这些方法也是向下压缩的,只是一个不同的方法(-accessibilityValue over -accessibilityIdentifier-accessibilityLabel)。

  1. ...but,我不知道新的单元格是添加在列表的顶部或底部,还是介于两者之间。

要查询XCUIElement的帧,可以使用新的XCUIElementAttributes协议公开-frame。例如:

代码语言:javascript
复制
let app = XCUIApplication()
app.launch()

app.buttons["Add New Cell to Table"].tap()

let lastCell = app.cells["Last Cell"]
let newCell = app.cells["New Cell"]

XCTAssert(newCell.exists)
XCTAssert(newCell.frame.minY > lastCell.frame.maxY)
  1. 对我来说,当涉及到UI测试时,一种检查特定元素是否具有特定值的简单方法应该是一种无需考虑的方法。

如果您从可访问性的角度来考虑所有问题,这将成为一个不存在的问题。UI测试只能通过可访问性API与元素交互,因此必须实现它们。在启用这些设置的情况下,您还可以获得使您的应用程序更容易被用户访问的额外好处。

尝试将单元格的-accessibilityLabel-accessibilityIdentifier设置为显示的文本。UI测试可以是挑剔的,它使用哪一个。

  1. 可能,由于缺少文档,我可能忽略了显而易见的事实。如果是的话,就告诉我。

XCTest和UI测试没有任何正式文档。因此,我已经从框架中公开的头文件中提取了自己的文件。请注意,即使他们是从来源,他们是非官方的。

XCTest / UI测试文档

票数 11
EN

Stack Overflow用户

发布于 2016-07-28 21:50:29

我要做的是将UILabel的可访问性标识符设置为MyLabel

代码语言:javascript
复制
func myLabelText() -> String {
  let myLabelUIElement: XCUIElement = self.application.staticTexts["MyLabel"]

  return myLabelUIElement.label
}

用Xcode 8和iOS 10测试

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32314744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档