在 iPhone 6(及更小机型)上,手机永远不会在“展开”模式下显示拆分视图。也就是说,拆分视图内的主视图控制器和辅助视图控制器始终按顺序显示。相比之下,在 iPhone 6Plus(和更大)上,手机在横向时会在展开模式下显示拆分视图。也就是说,主视图控制器和辅助视图控制器并排显示。
这给 UI 测试带来了问题。当设备是手机并且水平尺寸等级是紧凑型(iPhone 6 和更小)时,应该有一组测试。当设备是手机并且水平尺寸等级是常规时,应该有一组单独的测试。
不幸的是,在处理 UITests 中的 UIElements 时,我无法发现尺寸类的测试。执行 UI 测试时有没有办法获取 traitCollection 信息?
UIDevice 对象有一个“模型”属性。这是一个字符串。在模拟器上测试时,我从这个属性中看到的唯一值是“phone”或“pad”。手机的型号似乎不可用,Apple 的文档也不保证任何特定的价值。
UIDevice 对象也有一个 userInterfaceIdiom 属性。除了平板电脑和手机之外,此枚举还可以报告 CarPlay 和 Apple TV 等内容,但同样不会返回任何型号信息。
XCUIDevice 不报告特征环境或型号。
我的解决方法是在我的主项目中插入测试代码。在开始的场景中,我给其中一个元素一个可访问性标识符,它反映了初始水平尺寸等级。例如,如果有标题,则可访问性标识符变为“标题(紧凑)”或“标题(常规)”。这可以在设置期间在 UI 测试中进行询问,并且可以设置全局变量以供以后使用。然而,这是一个非常糟糕的组合。
我希望有人知道一个对象(可在 UI 测试中访问),它将返回如下内容:
<some object>.supportsSplitViewInExandedMode
那很好啊!