带有 unicode 的字符串在新的 XCode UI 测试中不匹配并且测试失败
Posted
技术标签:
【中文标题】带有 unicode 的字符串在新的 XCode UI 测试中不匹配并且测试失败【英文标题】:String with unicode doesn't match on new XCode UI Test and the test fails 【发布时间】:2015-09-25 11:37:10 【问题描述】:我正在使用新的 XCode 7 进行一些 UI 测试。我的应用程序如何使用通知,第一次使用 ios 时会自动询问“我的应用程序”希望向您发送通知。
当我记录测试时,XCode 在下面写下这些行:
- (void)testFirstUse
[XCUIDevice sharedDevice].orientation = UIDeviceOrientationPortrait;
XCUIApplication *app = [[XCUIApplication alloc] init];
[app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap];
[app.tables/*@START_MENU_TOKEN@*/.staticTexts[@"United States"]/*[[".cells.staticTexts[@\"United States\"]",".staticTexts[@\"United States\"]"],[[[-1,1],[-1,0]]],[0]]@END_MENU_TOKEN@*/ tap];
[app.navigationBars[@"Select a Country"].buttons[@"Next"] tap];
请注意,XCode 将 unicode 而不是引号信号放在 MyApp 名称上。 当运行测试失败并出现错误“No matches found for alert”。
我尝试将 unicode 更改为引用信号,但它也不起作用。
清楚吗? 有人有同样的问题吗?
[更新] 我对这段代码有两个问题
1- XCode 生成的带有 unicode 的消息存在错误
2- 点击系统显示的警报后测试失败
【问题讨论】:
【参考方案1】:我找到了一种解决方法,以避免在关闭系统警报后崩溃:
我改变了这一行
[app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap];
到
XCUIElement *alert = app.alerts[@"\U0000201cMyApp\U0000201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"];
if ([alert exists])
[alert tap];
我做了两个改动
unicode 上的四个 0000 以避免构建失败 在点击警报之前进行验证以避免测试失败【讨论】:
如果显示警报,我仍然会崩溃。【参考方案2】:您可以通过直接访问alert.element
并通过集合视图点击“确定”按钮来确认警报。
let app = XCUIApplication()
app.launch()
// trigger location permission dialog
app.alerts.element.collectionViews.buttons["Allow"].tap()
但是,Xcode 7(和 Xcode 7.1 Beta)会在成功解除警报后崩溃。我已经打开了bug report with Apple 并鼓励所有遇到问题的人复制它。
【讨论】:
现在我遇到了@Joe Masilotti 的问题。但我注意到它只发生在 iOS 启动的警报中。 正确,@Salmo。您可以忽略自己的UIAlertView
s 和 UIAlertController
s 而不会出现问题。
我刚刚找到了一个解决方法。我把它贴在下面。但我也会像你一样在 Apple 上开一期。【参考方案3】:
xcode生成的unicode字符格式不对,是xcode的bug。作为临时解决方法,您可以替换
[app.alerts[@"\U201cMyApp\U201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap];
与
[app.alerts[@"\u201cMyApp\u201d Would Like to Send You Notifications"].collectionViews.buttons[@"OK"] tap];
即\u
上的所有 \U【讨论】:
以上是关于带有 unicode 的字符串在新的 XCode UI 测试中不匹配并且测试失败的主要内容,如果未能解决你的问题,请参考以下文章
无法在新的自定义类 Xcode 11 中连接到 IBOutlet
无法在新的 Xcode 版本 13 上运行 React 本机 IOS 应用程序
Cocoapods 无法在新的 m1 mac Big Sur Xcode 上运行