首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xcode7.3自定义UITest中的显示指示符

Xcode7.3自定义UITest中的显示指示符
EN

Stack Overflow用户
提问于 2016-06-20 14:29:22
回答 1查看 339关注 0票数 0

(Xcode 7.3.1,iOS9.3,Swift)

我很难在我的作业中设置一个UI测试,这似乎是一个相当标准和常见的用例。

我有一个子类UITableViewCell,它包含一个不填充整个单元格的textField,并且具有显示指示符集。用户可以通过点击textField将数据输入到textField中,但是如果他们在textField之外点击,但仍然在单元格中,我的应用程序就会切换到另一个视图。该项目运行良好,子视图从单元格的textField接收正确的数据。

我的主细节应用程序在主视图和细节视图上都有UITableViews。我的UI测试选择主视图中的第一个单元格,等待DV,然后在详细视图中选择第二个单元格,这是根据我先前的描述配置的。

我正在模拟第二个单元上的点击

代码语言:javascript
复制
tablesQuery.cells.elementBoundByIndex(1).tap()

但是,模拟器将其解释为textField中的一个抽头,因此不会发生segue。我读过SwiftyCruz的问题和给出的答案,但他的用例有点不同,因为我没有使用Detail Disclosure,而且接受的答案也不能解释我的情况。在按照ferunandu解释的过程中,我尝试在单元格上设置可访问性标签和标识符,以及为accessoryView?.accessibilityIdentifier设置一个不同的字符串。尽管UI测试仍然不起作用,但ferunandu的代码片段确实将泄密指示符从>更改为蓝色框。

使用断点,我一直在调试窗口中查询app对象,试图找到正确的控件,但没有结果。我能够使用索引和标识符找到textField,但是我尝试过的任何东西都没有为accessoryView返回.exists true。

我是不是试图不正确地进入手机?或者,真的不可能做我想做的事吗?

我的测试代码是:

代码语言:javascript
复制
    XCUIDevice.sharedDevice().orientation = .Portrait
    let app = XCUIApplication()
    wait()
    let tablesQuery = app.tables
    tablesQuery.cells.elementBoundByIndex(0).tap()
    wait()
    tablesQuery.cells.elementBoundByIndex(1).tap()

我在这里有什么不理解的?如有任何建议,将不胜感激。

(我知道我本可以在子视图上使用标准的UITableViewCell进行数据输入,但我不愿意改变我的应用程序的设计,以适应XCTest的设计,似乎有点倒退。)

EN

回答 1

Stack Overflow用户

发布于 2016-06-21 14:59:35

我有一个子类的UITableViewCell,它包含一个不填充整个单元格的textField . 我正在模拟对第二个细胞的敲击 tablesQuery.cells.elementBoundByIndex(1).tap() 但是,模拟器将其解释为textField中的一个抽头,因此不会发生segue。

听起来,您在表视图单元格上的点击正在被文本字段截获。当UI测试表格视图单元格上的点击时,点击将位于UI元素的框架的中心。

若要从单元格的中心偏移抽头位置,请使用coordinate(withNormalizedOffset:)并直接点击坐标而不是元素。

代码语言:javascript
复制
let cell = app.tables.cells.elementBoundByIndex(0)
// Retrieves coordinate that is 50% of the way along the cell
// and 20% of the way down the cell - adjust these values to
// find the right values to avoid tapping the text field area
// of the cell
let cellCoordinateForTap = cell.coordinateWithNormalizedOffset(CGVector(dx: 0.5, dy: 0.2))
cellCoordinateForTap.tap()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37925111

复制
相关文章

相似问题

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