0

在 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

那很好啊!

4

1 回答 1

0

对不起大家!

对于其他同样不耐烦的程序员来说,知道 Apple Docs 中为 XCUIElementAttributes 描述的最后一个特性是“SizeClass”可能很有用。文档状态:

描述可用的用户界面大小类。

应该这样做!

于 2019-08-02T19:43:53.443 回答