iOS UITesting如何解除Popover(iPad Popover NOT Alert Style)

时间:2017-01-27 08:59:48

标签: ios swift testing

我有一个非常复杂的应用程序,有很多视图和弹出窗口可以快速选择条目。

我无法解雇一个弹出窗口。我尝试了很多:

  • 点击窗口中的坐标
  • app.otherElements [" PopoverDismissRegion"]击中
  • 背后的元素
  • popover(根本不可击中)

当我在XCode中记录它时,我得到: app.otherElements [" PopoverDismissRegion"]

这对我没有意义。

希望有人可以提供帮助。

THX

信息 iOS 10.2,Xcode 8.2.1, iPad Air 2(设备和模拟器,结果相同)

2 个答案:

答案 0 :(得分:1)

修改

找到了更好的解决方案here

XCUIApplication().otherElements["PopoverDismissRegion"].tap()

原始解决方案:

试试这个:

XCUIApplication().windows.element(boundBy: 0).tap()

点击窗口并关闭当前活动的弹出窗口。

答案 1 :(得分:0)

在iPhone模拟器上,一切都通过以下方式为我工作:

app.swipeDown(velocity: .fast)

当我希望在iPad模拟器上运行相同的测试时,我开始遇到问题。该手势已被应用,但其大小不足以消除该视图。我尝试了其他类似的事情:

XCUIApplication().windows.element(boundBy: 0).tap()

app.otherElements["PopoverDismissRegion"].tap()

但没有任何工作。该观点仍然没有被消除。

对其进行更多测试,我发现如果iPad Simulator处于横向,该视图实际上将被发送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
}