XCUITest 如何关闭日期选择器弹出框

Posted

技术标签:

【中文标题】XCUITest 如何关闭日期选择器弹出框【英文标题】:XCUITest How to dismiss date picker popover 【发布时间】:2021-12-11 10:08:14 【问题描述】:

ios 15 中,我的应用中有一个日期选择器,它使用 .compact 样式,因此它将日期和时间选择 UI 显示为弹出框。

我在 UI 测试中找不到解除弹出框的方法,尝试了一些关于解除弹出框的建议,例如:

app.otherElements["PopoverDismissRegion"](不存在) app.otherElements["dismiss popup"].tap()(不存在) .windows.element(boundBy: 0).tap()(只是点击屏幕的中心,仍然是弹出框,所以没有任何用处)

【问题讨论】:

【参考方案1】:

令人难以置信的是,点击“提供的”解雇按钮不起作用,嗯?

我通过“强制”点击另一个我知道在屏幕上的元素(标题文本)解决了这个问题。如果日期选择器覆盖了该元素,这显然不起作用,但在我的情况下它从来没有。

extension XCUIElement 

  func forceTap() 
    self.coordinate(withNormalizedOffset: CGVector(dx: 0.0, dy: 0.0)).tap()
  

【讨论】:

不错,看起来这个也很好用【参考方案2】:

花了一些时间四处搜索,寻找可能有效的与日期选择器无关的答案,但我找到了this answer,这表明这可行:

app.swipeDown(velocity: .fast)

这在 iPhone 模拟器上对我有用,根据答案,它也适用于横向 iPad,但不适用于纵向。

复制答案,因为原始答案不引用日期选择器,因此更难找到!

【讨论】:

以上是关于XCUITest 如何关闭日期选择器弹出框的主要内容,如果未能解决你的问题,请参考以下文章

Datepicker:单击按钮时如何弹出日期选择器并将值存储在变量中[关闭]

当值最初在范围内设置时,日期选择器弹出格式不起作用

简单的快速颜色选择器弹出框(iOS)

使用弹出框选择日期时间?

.NET WinForms 的月份选择器 [重复]

日期选择器部分被溢出-y滚动隐藏