第一个测试有假阴性,因为连续的屏幕可以有相同的导航栏标签(我正在走的代码不是我的).第二个测试有误报,因为有时单击表格元素不会转换到另一个表/屏幕,而是向当前屏幕添加额外的元素.
做了一些阅读后,似乎使用辅助功能标签可能是要走的路.所以我在应用程序代码(在vIEwDIDAppear中)为导航栏的辅助功能标签设置一个UID,然后在UI测试代码中进行测试.感觉这样应该可以工作,但是我只会在测试代码中回复一个零值.
在UI测试中,我会自由地承认我是一个noob,主要是剪切/粘贴/调整其他人的代码,而不会对我在做什么有一个清晰的了解.所以我可能会在辅助功能标签代码本身和可能在概念层面检测屏幕已经改变了一些天真的错误.也许有更简单/更惯用的我可以做的事情.
在应用程序中:
- (voID)vIEwDIDAppear: (BOol)animated { [super vIEwDIDAppear: animated]; //... UINavigationbar* navbar = self.navigationController.navigationbar; if( navbar ) { static NSInteger s_UID = 0; navbar.topItem.accessibilityLabel = [Nsstring stringWithFormat:@"UID-%ld",s_UID++]; }}
在XCTest UI测试中:
- (Nsstring*) navBaraccessibilityLabel: (XCUIApplication*) app{ Nsstring* result = NulL; XCUIElementquery *navbars = app.navigationbars; XCUIElement* firstElem = [navbars.staticTexts elementBoundByIndex:0]; if( firstElem ) { result = (Nsstring*)firstElem.accessibilityLabel; // This is always nil } return result;}
请注意,发现firstElem IS,并且我能够提取firstElem.label从它非常愉快.
任何帮助赞赏.
解决方法 您可以测试元素是否可访问:左键单击UI测试并开始录制,模拟器将启动,您可以单击模拟器中的元素,如果该元素可访问Xcode将在testExample方法内为您写入测试代码.
或者在模拟器中运行应用程序,并打开辅助功能检查器,并将其悬停在元素上,因为详细信息将显示在检查器中.
除此之外,我想在你的情况下,您可以通过为每个屏幕添加导航项标题来验证这一点,即self.navigationItem.Title = @“myScreen”;
然后用断言验证屏幕,即
// let app = XCUIApplication() // SwiftUIApplication *app = [UIApplication alloc] init]; // Objective-CXCTAssertEqual(app.navigationbars.element.IDentifIEr,"myScreen") // Don't forget to import class XCTest总结
以上是内存溢出为你收集整理的ios – 我的XCode UI测试如何检测屏幕是否已更改?全部内容,希望文章能够帮你解决ios – 我的XCode UI测试如何检测屏幕是否已更改?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)