开发者社区 问答 正文

在iOS 13 XCUITest上滑动关闭视图

我一直在编写UITest,在记录了一个打开模态视图的测试之后,然后将该模式向下滑动到屏幕的底部以排除它,我得到了如下代码(因为其中有一个表视图):

var tablesQuery = app.tables.element(boundBy: 0)
tablesQuery.swipeDown()

问题是,这并不总是有效的。有时(尤其是在iPad上),当播放测试时,视图会向下移动,跳回原处(而不是取消)。

苹果公司肯定有同样的问题,并提出了一个更好的解决方案,以驳回对iOS 13 XCUITes的模态观点(.Present)。

是否有一种方法可以可靠地排除这些由核心测试框架支持的傻瓜,这样我就不需要做任何定制的摆弄手势或诸如此类的事情了吗?

谢谢你的帮助!

如果没有任何明显的解决办法,我想被黑客攻击的重兵姿态也能回答这个问题.因为所有的答案都有非常微小或轻微的版本的刷卡,而不是全屏拒绝手势。但是,我希望您首先在支持的解决方案上创建上下文(例如,您知道不存在支持的解决方案吗?)

感谢任何帮助!-支持/维护苹果通过XCTest框架拒绝视图的方式,或者关于这个不存在的信息将回答这个问题。

展开
收起
游客5akardh5cojhg 2019-12-24 12:59:14 1118 分享 版权
阿里云 AI 助理回答

在处理XCUITest中模态视图的不稳定滑动问题时,确实存在一些挑战,尤其是因为自动化测试可能不如手动操作那样精确。虽然没有一个绝对“官方支持”的完美解决方案来确保每次都能可靠地关闭模态视图,但有一些策略可以提高成功率:

  1. 增加等待时间:在执行swipeDown()操作之前,加入适当的等待时间,确保视图已经完全加载并稳定。可以使用waitForExistence(timeout:)方法来确保元素存在后再进行操作。

  2. 多次尝试滑动:有时一次滑动可能不足以完全关闭模态视图,尤其是在较大的屏幕上。你可以尝试在一个循环中执行滑动操作,直到模态视图消失或达到一定的尝试次数。

  3. 使用更精确的坐标:而不是直接对表格进行滑动,尝试获取模态视图的边界,并从顶部或底部开始滑动。这可以通过计算模态视图的高度并使用该信息来确定滑动的起始点来实现。

  4. 模拟点击背景:在某些情况下,点击模态视图外部(即背景区域)可以关闭模态视图。尝试找到并点击模态视图下方的父视图或屏幕的某个空白区域。

  5. 利用XCUIElementQuery的hittable属性:在执行滑动或点击之前,检查模态视图是否仍然可交互(.hittable),以确保视图状态正确再进行操作。

  6. 自定义手势:如果上述方法都不理想,你可能需要设计一个更复杂的滑动手势,比如更长距离、更快的速度或者结合上滑和向左/右滑动的组合,以模仿全屏拒绝的手势。

  7. 查看iOS版本特定的解决办法:苹果在不同版本的iOS中可能会改进XCTest框架,因此确认你的测试代码与当前iOS版本兼容,并查找是否有新的API或推荐做法来处理模态视图。

  8. 社区和论坛:考虑在Apple Developer Forums或其他开发者社区提问,看看其他开发者是否找到了更有效的技巧或工作流程。

记住,自动化测试有时需要根据具体应用和环境进行调整和优化,可能需要一些实验和调试才能找到最稳定的方法。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答地址: