Jos*_*ffy 6 ios xcode-ui-testing
是否可以对Action Extension目标执行UI测试?我无法使用Action Extension作为"要测试的目标"来创建UI测试目标.我试图从Safari(或照片中)加载动作扩展,尽管Safari /两者都是首选
如果我记录我的互动,我可以得到:
app.icons["Safari"].tap()
然后我可以手动添加:
XCUIDevice.sharedDevice().pressButton(.Home)
在生成的代码之前,但它没有按预期工作(模拟器留在主屏幕上).
我也尝试过:
UIApplication.sharedApplication().openURL(NSURL(string: "https://google.com")!)
但那也没有打开Safari.
我甚至不确定如果它能够启动,我是否能够与Action Extension自动交互,但希望它是可能的.
因此,可以使用 XCUITest 切换应用程序,但没有记录。如果你查看Facebook 的 WebDriverAgent,他们会进行标头转储并为从跳板启动提供帮助程序。您可以致电:
XCUIApplication* safari = [[XCUIApplication alloc] initWithPrivatePath:nil bundleID:@"com.apple.safari"];
[safari launch];
Run Code Online (Sandbox Code Playgroud)
然后与 Safari 进行交互,就像您与应用程序进行交互一样。但是,我遇到了类似的问题,XCUITest 实际上不会启动扩展本身。打开后(即在测试运行时物理点击扩展按钮),测试运行程序将完美运行,并且您可以在与应用程序相同的上下文中与扩展程序进行交互。然而,让测试运行者点击来启动扩展没有任何作用。我还有一个有关此主题的Apple 开发论坛问题。
更新:
事实证明,如果您使用该应用程序在按钮位置按下屏幕,扩展程序就会加载,您就可以与其交互!请注意,用于点击坐标的 API 非常不稳定。x、y 是您创建坐标的对象的框架的乘数。相关示例代码:
// 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];
Run Code Online (Sandbox Code Playgroud)
在调用 Apple 的扩展选择器后,这将按下操作表中您的扩展的按钮。无论出于何种原因/XCUITest 中的错误,仅在操作表中按您的应用程序不起作用:
[app.sheets.staticTexts[@"MyApp"] tap];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |