iOS UITest – 导航到所有可用屏幕
我正在使用iOS UITest作为
Swift应用程序.我喜欢用的东西,
func testAllScreenNavigation() { let app = XCUIApplication() app.tabBars.buttons["Home"].tap() app.navigationBars["Home"].buttons["More"].tap() app.sheets.buttons["Cancel"].tap() } 等等,以导航一些特定的,标签,按钮等,并切换到相应的屏幕.但我想浏览我的应用程序的每个屏幕(它可以是BFS样式导航或DFS样式导航,无论如何).有没有iOS提供的方式,所以我可以获得所有可导航元素,然后自动探索我的应用程序更深入和更深入? 我还需要跟踪屏幕中哪些xcuoelement已经处理以及哪些尚未处理. 解决方法
我喜欢你获取所有视图的想法,并检查布局和本地化是否正常.
我认为您需要指定“屏幕”的标准以及如何访问它们. 基本上,可以是以下结构的东西 - UITabBarController -- UISplitViewController --- UINavigationController ---- UIViewController ----- UIBarButtonItems ----- UIView ----- UIButton ----- UISwitch ----- UITableViewCell 您现在可以从UITabBarController自上而下到下一个控制实例(也可以跳过一个,例如iPhone上的SplitViewControllers). 您可以使用一般属性: XCUIApplication().tabBars 然而,转换是一个问题:你如何从一个ViewController到另一个ViewController并且它们都在ViewController的View中定位,或者你是否必须循环视图的子视图. UIButton -> Touch Up Inside UISwitch -> Value Changed UITableViewCell -> DidSelectRowAtIndexPath UIView -> UILongPressGestureRecognizer 这就是我基本上如何设置它: 检查视图的所有子视图. 这样您就可以在应用程序层次结构中浏览很多视图,但是您需要一些UIBarButtonItems,自定义手势识别器的扩展,当然还有一些可以监听值更改并执行布局的“特殊”控件 – 更改. 访问特定元素 除了上面的方法,您只需获取特定类型的元素数组,您就可以访问特定元素(例如,您知道它们是具有某些ValueChangeListeners的特定类型的元素) 要特别访问特定对象,比如上面的TabBar示例,您可以像这样使用accessibilityLabel.首先,您需要在代码或.xib文件/ .storyboard中声明accessibilityLabel: // just to illustrate,so you get an idea: self.tabBarController.isAccessibilityElement = true self.tabBarController.accessibilityLabel = "tabBar" 然后做: let tabBar = XCUIApplication().tabBars["tabBar"] 以下是Apple用于设置这些accessibilityLabels的文档: 获取元素的相关标识符的一种好方法是使用Apple的Accessibility Inspector: 一般来说访问元素 要访问一般的元素,您需要使用这些对象的XCUIElementType,在这里您将根据它们的类访问对象. 你仍然会面临“特殊控制”的问题.由于Apple文档缺少(imho)有关属性和属性的一些细节,我建议在此处提供文档:https://blog.metova.com/guide-xcode-ui-test/它提供了可访问内容的精彩概述,可以帮助您更好地理解. 可以在此处找到可用的XCUIElementTypes的概述.基本上,elementType属性是一个枚举值,表示元素的类型. XCUIElementType是一个非常大的枚举,它的一些成员不适用于iOS应用程序(它们适用于MacOS X应用程序).一些更常用的值是: Alert Button NavigationBar TabBar ToolBar ActivityIndicator SegmentedControl Picker Image StaticText TextField DatePicker TextView WebView https://developer.apple.com/reference/xctest/xcuielementtype?language=objc (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |