XCTest UI Testing API:
XCUIApplication:理解成容器,所有的元素查找操作都在上進(jìn)行。
XCUIElementQuery:查找方式,查找的結(jié)果是一個或者多個XCUIElement,方便之后進(jìn)行操作。
XCUIElement:找到的元素,可以進(jìn)行相關(guān)的操作(點(diǎn)擊,輸入等)。
在上一章,我們利用錄制工具進(jìn)行錄制,并且成功的出現(xiàn)了第一行自動化的代碼:
XCUIApplication().tables.buttons["點(diǎn)擊登錄"].tap()

XCUIApplication
對于XCUIApplication(),自己的理解是,這就是待測的目標(biāo)APP程序的一個實(shí)例,所有對元素的操作都即將此上面進(jìn)行操作。
往上查看,其實(shí)在SetUp階段,已經(jīng)對XCUIApplication()進(jìn)行了操作,如圖2。

右鍵點(diǎn)擊XCUIApplication(),選擇“Jump to Definition”查看定義,如圖3,可以看到XCUIApplication()有2個常用的方法launch()和terminate(),如圖4,從名字可以看出,一個是啟動程序,一個是關(guān)閉程序。


我理解的是APP上的所有元素都為XCUIApplication()底下的子元素。因此當(dāng)需要查找某個元素進(jìn)行操作或者查看值的時候,都是從XCUIApplication()出發(fā)進(jìn)行查找。
XCUIElementQuery
XCUIElementQuery的作用,按我的理解,是跟web UI 自動化工具selenium里頭 findelementbyXpath(id/css/class)一個原理,根據(jù)某個條件去查找當(dāng)前可視頁面所擁有的元素,返回一個或多個元素(XCUIElement)。獲取到一個的之后,可以直接進(jìn)行操作,多個的時候,需要進(jìn)行過濾,找到真正需要的那個,再進(jìn)行操作。
XCUIElementQuery繼承XCUIElementTypeQueryProvider,可以從XCUIElementTypeQueryProvider(圖5)那看到當(dāng)前支持的元素類型,button,table,textfiled等等,以后遇到可疑的元素,可以從這看能不能查到對應(yīng)的。

XCUIElement
XCUIElement是確確實(shí)實(shí)的元素,可以進(jìn)行相關(guān)操作,用selenium最多的是click和sendkeys,這里用的最多的是tap和typeText,作用是等價的。IOS由于手機(jī)環(huán)境,有一些額外的動作,可以通過右鍵tap,jump to Definition 查看更多的動作,比如press(長按),swipeUp(從下往上劃),swipeLeft(從右往左劃)等等,如圖6。

小結(jié)
做UI自動化的入門級別水平,就是懂得根據(jù)規(guī)則,查找UI上的元素,并且給這些元素發(fā)送一些簡單指令。了解了這3個api,基本上就可以控制元素做一些基本的行為了,能看到元素在“自動”完成一些事情,感覺也跟“自動化”掛鉤了,不是么? :)
下一章從登錄的一個測試用例開始,看看需要寫一些什么來完成一條用例。