gpt4 book ai didi

swift - UIPickerView 和 UI 单元测试 : How to get values of UIPickerWheel?

转载 作者:搜寻专家 更新时间:2023-11-01 07:15:44 25 4
gpt4 key购买 nike

最近我很头疼(而且我仍在努力)找出如何检索 UIPickerWheel 中的所有值。对我来说应该足以在车轮的特定行移动,但我不能!太令人沮丧了!我试图逐行滚动以检索所有值(https://stackoverflow.com/a/39300344/821407),但速度太慢了!有什么线索吗?

注意:我不能使用 adjustToPickerWheelValue,因为我的根本问题是我不知道值,因为它们是动态的,我想避免使用 launchArguments/launchEnvironment。

最佳答案

这可能不是您希望得到的答案,但不可能在 UITest 中获取 UIPickerView 中所有行的标题。

如您所知,在运行 UITest 时,您只能通过 XCUIElement 类访问应用的 UI 元素。该类有一个 value 属性,可以为您提供有关您访问的 UI 元素的一些信息。当访问 UIPickerView 时,value 会为您提供当前所选行的标题。但仅限于选定的行。您可以访问选择器的行元素,但不幸的是,行元素的 value 属性始终为空。所以,这里没有运气。您所能获得的所有信息就是您的选择器的行数。

不过这并不奇怪。即使您可以访问 UIPickerView,您也无法直接访问所有行的标题。 UIPickerView 不知道它显示的标题。 UIPickerViewDataSource 的工作是提供标题。

因此,不幸的是,如果您需要了解 UITest 中 UIPickerView 的所有行标题,您实际上必须通过应用的用户界面逐一选择每个值。

但它不必像您链接的答案中那样复杂。您可以简单地点击下一行来选择它(应该稍微快一些),而不是模拟滚动:

let pickerView = app.pickerWheels.element
let numRows = pickerView.children(matching: .any).count
var values: [String] = [pickerView.value as! String]

for _ in 0..<numRows {
pickerView.coordinate(withNormalizedOffset: CGVector(dx: 0.5, dy: 0.55)).tap()
values.append(pickerView.value as! String)
}

在您的问题中,您并没有真正描述您要测试的内容。但是,如果您想测试选择器是否具有正确的行标题,也许单元测试会是一种更实用的方法?

关于swift - UIPickerView 和 UI 单元测试 : How to get values of UIPickerWheel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42307599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com