测试给定的 iPhone 是不是支持展开模式下的拆分视图
Posted
技术标签:
【中文标题】测试给定的 iPhone 是不是支持展开模式下的拆分视图【英文标题】:Test to see if a given iPhone supports a split view in expanded mode测试给定的 iPhone 是否支持展开模式下的拆分视图 【发布时间】:2019-08-02 19:27:00 【问题描述】:在 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
那太好了!
【问题讨论】:
我同意,主要是!当阐明意图并使测试代码更简单时,我将可访问性标识符插入到我的主项目中没有问题。然而,我的拼凑可能会使我的测试变得非常脆弱。 【参考方案1】:对不起!
知道 Apple Docs 中针对 XCUIElementAttributes 描述的最后一个特性是“SizeClass”,这可能对其他同样不耐烦的程序员有用。文档状态:
描述可用的用户界面尺寸等级。
应该这样做!
【讨论】:
以上是关于测试给定的 iPhone 是不是支持展开模式下的拆分视图的主要内容,如果未能解决你的问题,请参考以下文章
横向模式下的 iPhone/iPod Touch 屏幕截图是不是在应用商店中以这种方式显示?
iPhone 6 / 6 Plus 模拟器是不是支持更改显示缩放模式?