我有一个 Select 视图,几乎没有项目:"红色"、"绿色"、"黄色"、"黑色".在我的UI测试中,我需要从中 Select 一个特定的项目"绿色".我正在使用Xcode 7引入的XCEST UI测试API.

在此处输入图像描述

到目前为止,我所做的是在单元测试中浏览整个picker视图.这并不理想,因为它总是将 Select 器视图更改为底部项目(向上滑动时).

let app = XCUIApplication()
app.launch()
app.pickers.elementAtIndex(0).swipeUp()    
XCTAssert(app.staticTexts["Selected: Black"].exists)

改变 Select 器视图的另一个非常类似的方法是调用pressForDuration ... thenDragToElement,这不是我想要的.

app.pickers.elementAtIndex(0).pressForDuration(0.1, thenDragToElement: someElement)

当我使用UI test record函数时,它不会记录 Select 器视图滚动事件.当我点击picker view项目时,它会记录:

app.pickerWheels["Green"].tap()

但当测试运行时,这实际上不起作用(可能是因为它需要在点击之前先滚动 Select 器视图).

下面是测试的演示应用程序.

https://github.com/exchangegroup/PickerViewTestDemo

使现代化

从Xcode 7.0 beta 6开始,现在可以 Select Select 器视图.

app.pickerWheels["Green"].adjustToPickerWheelValue("Yellow")

推荐答案

如问题更新中所述,Xcode 7 Beta 6增加了对与 Select 器交互的支持.新添加的方法-adjustToPickerWheelValue:应用于 Select UIPickerView上的项目.

let app = XCUIApplication()
app.launch()
app.pickerWheels.element.adjustToPickerWheelValue("Yellow")

这是GitHub repo with a working example美元.大约more information in a blog post I wrote人.

Swift相关问答推荐

JSON如何解码空对象

如何在SWIFT中使用DiscardingTaskGroup获得任务结果

ARRaycast Query和前置摄像头(ARFaceTrackingConfiguration)

为什么这个快速代码不显示文本字段?

在表单中对齐文本框

为什么Swift可以在没有足够信息的情况下推断类型?

SwiftUI 从任务中安全更新状态变量

TextField 键入未完成

如何在 UITableView 中点击图片和标题

状态变量更改后,SwiftUI 视图不会更改

如何为 Swift UI 视图定义 struct ?

Swift 中的Combine和didSet有什么区别?

按钮图像不会立即刷新

数组使用偏移量对自身执行 XOR

使用列表的下一项更新相同的视图

如何处理永远不会失败的 String.Encoding 初始化程序?

如何在 SwiftUI 中通过按钮点击一次为一个更改设置动画?

Apple 的自然语言 API 返回意外结果

无法从自定义动态框架(Swift)访问类

'NSLog' 不可用:可变参数函数在 swift 中不可用