06如何連接Windows窗口
同學(xué)們好,我是網(wǎng)易AirtestProject的團(tuán)隊(duì)成員曉娟,歡迎大家來(lái)到我們的視頻教程專(zhuān)欄《14天Airtest自動(dòng)化測(cè)試小白課程》。
今天我們帶大家學(xué)習(xí)一下“設(shè)備連接”章節(jié)的最后一部分內(nèi)容:如何連接Windows窗口。這節(jié)課我們主要講一下如何在IDE中連接Windows應(yīng)用窗口、Windows窗口連接的常見(jiàn)問(wèn)題以及如何在腳本中連接Windows窗口。
在IDE中連接Windows應(yīng)用窗口
先來(lái)看下如何在IDE中連接Windows窗口。其實(shí)在IDE中連接Windows窗口,我們既可以把窗口嵌入到IDE中去,也可以不把窗口嵌入到IDE中。
① 窗口嵌入IDE
方式一:選定窗口
為防止其它應(yīng)用窗口對(duì)待測(cè)窗口產(chǎn)生不必要的影響,在連接Windows窗口之前,我們只需要在桌面上留下IDE窗口和待測(cè)應(yīng)用的窗口即可
調(diào)整待測(cè)應(yīng)用窗口到合適大小,嵌入之后應(yīng)用窗口的大小不能改變
點(diǎn)擊 “選定窗口” 按鈕,之后隨著鼠標(biāo)移動(dòng),將會(huì)有一個(gè)綠色細(xì)線框?qū)崟r(shí)框選出鼠標(biāo)位置對(duì)應(yīng)的應(yīng)用窗口
待綠色細(xì)線框移動(dòng)到目標(biāo)窗口后,鼠標(biāo)左鍵點(diǎn)擊完成嵌入

方式二:搜索窗口
點(diǎn)擊 “搜索窗口” 按鈕,在彈出的應(yīng)用窗口列表中,找到待測(cè)應(yīng)用窗口的title
點(diǎn)擊應(yīng)用title后面對(duì)應(yīng)的 “連接” 按鈕,即可完成嵌入

② 窗口不嵌入IDE
方式三:無(wú)嵌入連接
上面介紹的2種連接方式,都需要把Windows的應(yīng)用窗口嵌入到IDE中,然后再進(jìn)行自動(dòng)化測(cè)試,而無(wú)嵌入連接,無(wú)需將應(yīng)用的窗口嵌入到IDE中,也可以對(duì)窗口進(jìn)行自動(dòng)化操作。
我們?cè)贗DE的頂部菜單欄中,依次打開(kāi)選項(xiàng)--設(shè)置,在Device部分勾選上 “Windows窗口無(wú)嵌入連接” ,然后回到Windows窗口連接的面板,點(diǎn)擊選定窗口,移動(dòng)鼠標(biāo),待綠色線框移動(dòng)到待測(cè)應(yīng)用窗口后,單擊鼠標(biāo)左鍵確認(rèn),此時(shí)IDE最右側(cè)的設(shè)備窗口會(huì)被隱藏,我們就可以對(duì)待測(cè)應(yīng)用進(jìn)行自動(dòng)化測(cè)試操作了。

方式四:桌面模式
假如同學(xué)們想要測(cè)試的窗口不止一個(gè)(擁有多個(gè)不同的窗口句柄),那么單獨(dú)嵌入一個(gè)窗口可能就無(wú)法滿足測(cè)試需求,所以我們也提供了第四種方案:桌面模式。

點(diǎn)擊桌面模式按鈕,此時(shí)AirtestIDE右側(cè)的設(shè)備窗口將會(huì)完全隱藏,進(jìn)入Windows桌面模式。

在此模式下,錄制腳本與運(yùn)行腳本都與正常情況下沒(méi)有區(qū)別,只不過(guò)執(zhí)行時(shí)將會(huì)對(duì)整個(gè)桌面進(jìn)行截圖識(shí)別,甚至可以識(shí)別到AirtestIDE代碼窗口里的截圖語(yǔ)句(因此在執(zhí)行腳本時(shí),請(qǐng)盡量縮小AirtestIDE的窗口,避免腳本界面里的截圖干擾執(zhí)行結(jié)果)。
Windows窗口連接的常見(jiàn)問(wèn)題
了解完4種窗口的連接方式后,我們來(lái)看看在窗口的連接過(guò)程中,我們?nèi)菀子龅绞裁磫?wèn)題
① 不能正常嵌入IDE
因?yàn)樽烂鎽?yīng)用的實(shí)現(xiàn)方式各有不同,所以當(dāng)我們嘗試在IDE種嵌入窗口的時(shí)候,就可能會(huì)出現(xiàn)窗口無(wú)法正常嵌入的情況,比如:嵌入時(shí)IDE報(bào)錯(cuò)、無(wú)法點(diǎn)擊應(yīng)用、窗口被嚴(yán)重拉伸、窗口黑屏、窗口顯示不全等等。
這時(shí)候我們就需要換一種連接方式來(lái)連接我們的待測(cè)窗口,上面四種方式都可以嘗試下,直到我們可以正常操作待測(cè)應(yīng)用即可。
② Windows窗口嵌入后無(wú)法改變大小
在連接示范的時(shí)候我們就有提到,在嵌入窗口之前,我們需要先調(diào)整好待測(cè)應(yīng)用的大小,嵌入之后該應(yīng)用的大小將無(wú)法改變。
這是因?yàn)閃indows窗口在截圖時(shí)需要記錄分辨率,所以窗口嵌入到IDE后,大小將會(huì)被固定。因此我們需要特別注意,嵌入之前就要先調(diào)整窗口的大小了。
③ Windows窗口的彈出和斷開(kāi)問(wèn)題
對(duì)于嵌入到IDE的應(yīng)用窗口,我們可以打開(kāi)窗口右上角 “手機(jī)助手”,然后點(diǎn)擊 “斷開(kāi)當(dāng)前連接” ,Windows窗口就會(huì)從IDE中彈出來(lái)。
如何在腳本中連接Windows窗口
① 使用窗口句柄
在AirtestIDE里連接的窗口,都是用窗口句柄連接的。窗口句柄是每個(gè)Windows窗口對(duì)象擁有的獨(dú)一無(wú)二的32位無(wú)符號(hào)整數(shù),而且每次打開(kāi)窗口,句柄的數(shù)值都會(huì)變化。

這就意味著,假如我們用某個(gè)窗口嵌入到AirtestIDE里寫(xiě)出了一個(gè)腳本,雖然這次可以直接運(yùn)行,但是通過(guò)復(fù)制AirtestIDE里的腳本命令行的方式,是無(wú)法保證下一次還能夠運(yùn)行的。因?yàn)锳irtestIDE里的命令行,將會(huì)有這樣的參數(shù)內(nèi)容 --device Windows:///句柄,而下次再打開(kāi)窗口,可能句柄已經(jīng)發(fā)生了變化。
使用句柄連接窗口的腳本我們可以這么寫(xiě):
auto_setup(__file__,devices=["Windows:///133194"])
但是該連接腳本僅對(duì)本次打開(kāi)的Windows窗口有效,如果Windows窗口被關(guān)閉后重新打開(kāi),句柄也將會(huì)發(fā)生變化,該腳本失效。
② 使用正則表達(dá)式
上面我們?cè)谑纠褂谩八阉鞔翱凇边B接窗口的時(shí)候,IDE的彈窗會(huì)列出當(dāng)前所有打開(kāi)窗口的title,然后我們會(huì)根據(jù)窗口對(duì)應(yīng)的title來(lái)進(jìn)行連接。

所以我們也可以?寫(xiě)一個(gè)正則表達(dá)式去匹配到待測(cè)窗口的title?,并使用這個(gè)正則表達(dá)式來(lái)連接該窗口:
# 例如匹配“吹夢(mèng)到西洲”后面跟著換行符以外的任意字符的窗口title
auto_setup(__file__,devices=["Windows:///?title_re=吹夢(mèng)到西洲.*"])
而且大多數(shù)情況下,窗口的title比較不容易變化,所以使用正則表達(dá)式匹配窗口title來(lái)連接待測(cè)窗口的腳本,會(huì)相對(duì)穩(wěn)定些。
③ 連接整個(gè)桌面
如果不需要指定某個(gè)窗口應(yīng)用的話,我們還可以使用如下代碼直接連接整個(gè)桌面來(lái)做自動(dòng)化:
auto_setup(__file__,devices=["Windows:///"])
小結(jié)
好了,今天我們給大家講解了Windows窗口連接的3個(gè)內(nèi)容:在IDE中連接Windows應(yīng)用窗口、連接常見(jiàn)問(wèn)題以及如何用腳本中連接Windows窗口。

至此,設(shè)備連接章節(jié)的內(nèi)容我們就全部講完了,相信大家都迫不及待想要開(kāi)始寫(xiě)自動(dòng)化腳本了吧~別著急,下節(jié)課我們就帶大家一起進(jìn)入一個(gè)新的專(zhuān)題:自動(dòng)化腳本編寫(xiě)專(zhuān)題。下期我們不見(jiàn)不散~