autojs 如何获取控件的desc_Autojs Pro中,常用的几个选择器搜索接口的区别-技术类-雨后春笋...
前言
UI選擇器中,有findOne()、findOne(timeout)、findOnce()、findOnce(i)、find()、untilFind()幾個(gè)函數(shù)接口。在開發(fā)的過程中,這幾個(gè)接口有什么區(qū)別呢?
下面飛云結(jié)合Autojs Pro的官方文檔,來分享一下。
UiSelector.findOne()返回值類型備注UiSelector返回選擇器自身以便鏈?zhǔn)秸{(diào)用
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,直到屏幕上出現(xiàn)滿足條件的一個(gè)控件為止,并返回該控件。如果找不到控件,當(dāng)屏幕內(nèi)容發(fā)生變化時(shí)會重新尋找,直至找到。
需要注意的是,如果屏幕上一直沒有出現(xiàn)所描述的控件,則該函數(shù)會阻塞,直至所描述的控件出現(xiàn)為止。因此此函數(shù)不會返回null。該函數(shù)本來應(yīng)該命名為untilFindOne(),但由于歷史遺留原因已經(jīng)無法修改。如果想要只在屏幕上搜索一次而不是一直搜索,請使用findOnce()。
另外,如果屏幕上有多個(gè)滿足條件的控件,findOne()采用深度優(yōu)先搜索(DFS),會返回該搜索算法找到的第一個(gè)控件。注意控件找到的順序有時(shí)會起到作用。
一句話總結(jié)
findOne()函數(shù)會一直在屏幕上不停的尋找組件,直到找到。無返回值。
UiSelector.findOne(timeout)參數(shù)類型描述timeoutnumber搜索的超時(shí)時(shí)間,單位毫秒返回值類型備注UiSelector返回選擇器自身以便鏈?zhǔn)秸{(diào)用
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,直到屏幕上出現(xiàn)滿足條件的一個(gè)控件為止,并返回該控件;如果在timeout毫秒的時(shí)間內(nèi)沒有找到符合條件的控件,則終止搜索并返回null。
該函數(shù)類似于不加參數(shù)的findOne(),只不過加上了時(shí)間限制。
官方示例:
一句話總結(jié)
findOne(timeout)函數(shù)在設(shè)定時(shí)間內(nèi)尋找組件,返回null或返回找到的控件。
UiSelector.findOnce()返回值類型備注UiSelector返回選擇器自身以便鏈?zhǔn)秸{(diào)用
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,如果找到符合條件的控件則返回該控件;否則返回null。
一句話總結(jié)
findOnce()函數(shù)在屏幕上尋找組件,返回null或返回找到的控件。
UiSelector.findOnce(i)參數(shù)類型描述i{number}索引
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,并返回第 i + 1 個(gè)符合條件的控件;如果沒有找到符合條件的控件,或者符合條件的控件個(gè)數(shù) < i, 則返回null。
注意這里的控件次序,是搜索算法深度優(yōu)先搜索(DSF)決定的。
一句話總結(jié)
findOnce(i)函數(shù)在屏幕上尋找索引為 i + 1 的組件,返回null或返回找到的控件。
UiSelector.find()返回值類型備注UiCollection控件集合
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,找到所有滿足條件的控件集合并返回。這個(gè)搜索只進(jìn)行一次,并不保證一定會找到,因而會出現(xiàn)返回的控件集合為空的情況。
不同于findOne()或者findOnce()只找到一個(gè)控件并返回一個(gè)控件,find()函數(shù)會找出所有滿足條件的控件并返回一個(gè)控件集合。之后可以對控件集合進(jìn)行操作。
可以通過empty()函數(shù)判斷找到的是否為空。例如:
一句話總結(jié)
find()函數(shù)遍歷屏幕上的組件,返回組件的集合。沒招到則返回空集。
UiSelector.untilFind()返回值類型備注UiCollection控件集合
根據(jù)當(dāng)前的選擇器所確定的篩選條件,對屏幕上的控件進(jìn)行搜索,直到找到至少一個(gè)滿足條件的控件為止,并返回所有滿足條件的控件集合。
該函數(shù)與find()函數(shù)的區(qū)別在于,該函數(shù)永遠(yuǎn)不會返回空集合;但是,如果屏幕上一直沒有出現(xiàn)滿足條件的控件,則該函數(shù)會保持阻塞。
一句話總結(jié)
untilFind()函數(shù)會一直在屏幕上不停的尋找組件,直到找到。找到后返回組件的集合。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的autojs 如何获取控件的desc_Autojs Pro中,常用的几个选择器搜索接口的区别-技术类-雨后春笋...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 骁龙660是32位还是64位_骁龙660
- 下一篇: 三个容器倒水_绿茶“最忌讳”先放茶叶再倒