在 iPhone 6(及更小尺寸)上,手机绝不会在“扩展”模式下显示分割 View 。也就是说,分割 View 内的主视图 Controller 和辅助 View Controller 始终按顺序显示。相比之下,在 iPhone 6Plus(及更大型号)上,手机在横向时会以扩展模式显示分割 View 。也就是说,主视图 Controller 和辅助 View Controller 并排显示。
这会给 UI 测试带来问题。当设备是手机且水平尺寸类别为紧凑型(iPhone 6 及更小)时,应该有一组测试。当设备是手机并且水平尺寸类别为常规时,应该有一组单独的测试。
不幸的是,在 UITests 中处理 UIElements 时,我无法发现尺寸类的测试。执行UI测试时有没有办法获取traitCollection信息?
UIDevice 对象有一个“model”属性。这是一个字符串。在模拟器上进行测试时,我从此属性中看到的唯一值是“phone”或“pad”。手机的型号似乎不可用,Apple 的文档也不保证任何特定值。
UIDevice 对象还有一个 userInterfaceIdiom 属性。除了 pad 和手机之外,此枚举还可以报告 CarPlay 和 Apple TV 等内容,但同样不会返回任何型号信息。
XCUIDevice 不报告特征环境或型号。
我的解决方法是在我的主项目中插入测试代码。在开始场景中,我为其中一个元素提供了反射(reflect)初始水平尺寸类别的可访问性标识符。例如,如果有标题,则可访问性标识符将变为“标题(紧凑)”或“标题(常规)”。这可以在设置期间在 UI 测试中进行询问,并且可以设置全局变量以供以后使用。然而,这是一个相当糟糕的拼凑。
我希望有人知道一个对象(可在 UI 测试中访问),该对象将返回如下内容:
<some object>.supportsSplitViewInExandedMode
那太好了!
最佳答案
对不起大家!
对于其他同样不耐烦的程序员来说,了解 Apple 文档中为 XCUIElementAttributes 描述的最后一个功能是“SizeClass”可能会很有用。文档指出:
Describes the available user interface size classes.
应该可以了!
关于ios - 测试特定 iPhone 是否支持扩展模式下的分割 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57332416/