iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)
Posted
技术标签:
【中文标题】iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)【英文标题】:iOS UITesting How to Dismiss Popover (iPad Popover NOT Alert Style) 【发布时间】:2017-01-27 08:59:48 【问题描述】:我有一个非常复杂的应用程序,其中包含大量视图和弹出框,用于快速选择条目。
我无法关闭弹出框。我尝试了很多:
在窗口中点击坐标 app.otherElements["PopoverDismissRegion"] 击中后面的元素 弹出框(根本无法点击)当我在 XCode 中记录它时,我得到: app.otherElements["PopoverDismissRegion"]
这对我来说毫无意义。
希望有人能提供帮助。
谢谢
信息:ios 10.2,Xcode 8.2.1, iPad Air 2(设备和模拟器,结果相同)
【问题讨论】:
你的问题不清楚,你到底想做什么? XCode 7 UI Testing: Dismissal of system-generated UIAlertController does not work的可能重复 @vaibhav:什么不清楚?我有一个 iPad 风格的弹出框。我试图忽略这一点。 @Elist 弹出框没有按钮,所以不,它不是重复的。 【参考方案1】:编辑
找到了更好的解决方案here:
XCUIApplication().otherElements["PopoverDismissRegion"].tap()
原解决方案:
试试这个:
XCUIApplication().windows.element(boundBy: 0).tap()
点击窗口并关闭当前活动的弹出框。
【讨论】:
我以前试过这个,看看我的第二个子弹。这也被建议了很多,但它对我没有用。它可能适用于警报控制器,但不适用于显示为导航栏项目弹出框的表格视图。【参考方案2】:只需执行以下操作,iPhone 模拟器上的一切都对我有用:
app.swipeDown(velocity: .fast)
当我想在 iPad 模拟器上运行相同的测试时,我开始遇到问题。正在应用该手势,但它还不足以关闭视图。我尝试了不同的方法,例如:
XCUIApplication().windows.element(boundBy: 0).tap()
或
app.otherElements["PopoverDismissRegion"].tap()
但没有任何工作。该视图仍未被关闭。
对其进行更多测试后,我发现如果 iPad 模拟器处于横向状态,发送 swipeDown
手势实际上会关闭视图。所以...我能够像这样解决问题:
// If iPad, put the simulator on landscape mode
if UIDevice.current.userInterfaceIdiom == .pad
XCUIDevice.shared.orientation = .landscapeLeft
// Perform the swipe
app.swipeDown(velocity: .fast)
// Restore device portrait mode
if UIDevice.current.userInterfaceIdiom == .pad
XCUIDevice.shared.orientation = .portrait
【讨论】:
以上是关于iOS UITesting 如何关闭弹出框(iPad 弹出框不提醒样式)的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式关闭/禁用 iOS 11 中引入的屏幕截图弹出框?