用UItestingtestingAction Extension

是否可以对Action Extension目标执行UItesting? 我无法创build一个用Action Extension作为“要testing的目标”的UItesting目标。 我试图从Safari内部加载Action Extension(或照片,尽pipeSafari /都是优先)

如果我logging我的互动,我可以得到尽可能:

app.icons["Safari"].tap()

然后我可以手动添加:

XCUIDevice.sharedDevice().pressButton(.Home)

在生成的代码之前,但它不能按预期工作(模拟器留在主屏幕上)。

我也试过了:

UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)

但是那也不打开Safari。

我甚至不确定如果能够与Action Extension一起自动进行交互,如果它已经启动,但希望这将是可能的。

所以,可以使用XCUITest切换应用程序,但是没有logging。 如果您查看Facebook的WebDriverAgent ,他们做了一个标题转储,并从跳板启动帮助。 你可以打电话给:

 XCUIApplication* safari = [[XCUIApplication alloc] initWithPrivatePath:nil bundleID:@"com.apple.safari"]; [safari launch]; 

然后就像你做你的应用程序与Safari进行交互。 不过,我遇到了一个类似的问题,XCUITest不会真正启动扩展本身。 一旦打开(即在testing运行时,您可以在扩展button上点击),testing运行器可以正常工作,并且可以在与应用程序相同的上下文中与扩展程序交互。 然而,让testing运行者点击启动扩展程序什么也不做。 我也有一个关于这个话题的苹果开发论坛的问题 。

更新

事实certificate,如果您使用应用程序按下button的位置屏幕,扩展将加载,您可以与它交互! 请注意,用于点击坐标的API非常不方便。 x,y是您创build坐标的东西的框架的乘数。 相关示例代码:

 // app is your XCUIApplication // In this case we are tapping in the horizontal middle and at the y coordinate 603 (this is for a 6+ screen size) XCUICoordinate* coordinateOfRowThatLaunchesYourExtension = [app coordinateWithNormalizedOffset:CGVectorMake(0.5, 603.0 / 736.0)]; [coordinateOfRowThatLaunchesYourExtension tap]; 

这将在苹果的扩展select器被调用后,在操作表中按下你的扩展button。 无论出于什么原因/ XCUITest中的错误,只需按下您的应用程序在行动表中不起作用:

 [app.sheets.staticTexts[@"MyApp"] tap];