XCTest UI Testing API:
XCUIApplication:理解成容器,所有的元素查找操作都在上进行。
XCUIElementQuery:查找方式,查找的结果是一个或者多个XCUIElement,方便之后进行操作。
XCUIElement:找到的元素,可以进行相关的操作(点击,输入等)。
在上一章,我们利用录制工具进行录制,并且成功的出现了第一行自动化的代码:
XCUIApplication().tables.buttons["点击登录"].tap()
XCUIApplication
对于XCUIApplication(),自己的理解是,这就是待测的目标APP程序的一个实例,所有对元素的操作都即将此上面进行操作。
往上查看,其实在SetUp阶段,已经对XCUIApplication()进行了操作,如图2。
右键点击XCUIApplication(),选择“Jump to Definition”查看定义,如图3,可以看到XCUIApplication()有2个常用的方法launch()和terminate(),如图4,从名字可以看出,一个是启动程序,一个是关闭程序。
我理解的是APP上的所有元素都为XCUIApplication()底下的子元素。因此当需要查找某个元素进行操作或者查看值的时候,都是从XCUIApplication()出发进行查找。
XCUIElementQuery
XCUIElementQuery的作用,按我的理解,是跟web UI 自动化工具selenium里头 findelementbyXpath(id/css/class)一个原理,根据某个条件去查找当前可视页面所拥有的元素,返回一个或多个元素(XCUIElement)。获取到一个的之后,可以直接进行操作,多个的时候,需要进行过滤,找到真正需要的那个,再进行操作。
XCUIElementQuery继承XCUIElementTypeQueryProvider,可以从XCUIElementTypeQueryProvider(图5)那看到当前支持的元素类型,button,table,textfiled等等,以后遇到可疑的元素,可以从这看能不能查到对应的。
XCUIElement
XCUIElement是确确实实的元素,可以进行相关操作,用selenium最多的是click和sendkeys,这里用的最多的是tap和typeText,作用是等价的。IOS由于手机环境,有一些额外的动作,可以通过右键tap,jump to Definition 查看更多的动作,比如press(长按),swipeUp(从下往上划),swipeLeft(从右往左划)等等,如图6。
小结
做UI自动化的入门级别水平,就是懂得根据规则,查找UI上的元素,并且给这些元素发送一些简单指令。了解了这3个api,基本上就可以控制元素做一些基本的行为了,能看到元素在“自动”完成一些事情,感觉也跟“自动化”挂钩了,不是么? :)
下一章从登录的一个测试用例开始,看看需要写一些什么来完成一条用例。