最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

客戶端自動(dòng)化測(cè)試解決方案

2023-08-30 10:22 作者:程序員-王堅(jiān)  | 我要投稿

我們?cè)趯?shí)際的工作中,會(huì)有場(chǎng)景需要做“端到端的自動(dòng)化”,這部分自動(dòng)化實(shí)現(xiàn)成本較高,穩(wěn)定性較差。最近我們部門也涉及到這樣的業(yè)務(wù)場(chǎng)景,同時(shí)我也解決這個(gè)場(chǎng)景下做自動(dòng)化的痛點(diǎn)。下面我們就來給大家講下,我是如何解決這個(gè)問題的。

業(yè)務(wù)場(chǎng)景

?我們會(huì)在平臺(tái)側(cè)進(jìn)行一系列的配置,然后在windows客戶端上安裝我們的客戶端軟件,在進(jìn)行操作,去驗(yàn)證平臺(tái)側(cè)的配置是否符合期望

此時(shí)我們遇到2個(gè)難題

1、如果操作客戶端,我們的客戶端是一個(gè)GUI的客戶端軟件,這部分是最大的難題。

2、如果解決問題1,我們?cè)撊绾芜h(yuǎn)程控制windows去執(zhí)行我們的自動(dòng)化腳本呢?大家知道,遠(yuǎn)程執(zhí)行windows命令比執(zhí)行l(wèi)inux的命令復(fù)雜,更重要的他非常不穩(wěn)定

解決方案

1、先來解決難題2,這里我們是通過這樣的方案去解決的

我們?cè)趙indows客戶端上起了一個(gè)fastAPI框架,我們可以通過測(cè)試框架執(zhí)行web框架的api,在由fastAPI框架根據(jù)不同的接口,去本地執(zhí)行對(duì)應(yīng)的視圖函數(shù),并返回執(zhí)行結(jié)果即可。是不是很巧妙。這部分比較簡(jiǎn)單,我就不展開來說了。

?

?

2、那么還剩下一個(gè)難題,如果控制GUI客戶端呢?

實(shí)際上我們操作客戶端主要也是通過鼠標(biāo)和鍵盤來操作

所以我們采用的pyautogui+openCV方式,這一部分也是這篇博客的主要內(nèi)容。幫助大家實(shí)現(xiàn),如果做采用pyautogui+openCV的方案實(shí)現(xiàn)GUI自動(dòng)化方案

下面開始整體,正常學(xué)習(xí)GUI自動(dòng)化的基礎(chǔ)方案,今天先講下鼠標(biāo)操作和鍵盤操作

pyautogui學(xué)習(xí):鼠標(biāo)操作

1、安裝pyautogui模塊,直接pip安裝即可

?

?

2、實(shí)現(xiàn)鼠標(biāo)操作

這部分我們學(xué)習(xí)如何移動(dòng)鼠標(biāo)。先來介紹下pyautogui對(duì)坐標(biāo)的處理

?

如果我們的屏幕的分辨率是 100*100,那么左上角的坐標(biāo)就是0*0,其他點(diǎn)的坐標(biāo)就和我上圖中的一致

我們可以通過下面的命令獲取當(dāng)前屏幕的分辨率

import?pyautogui
print(pyautogui.size())
# Size(width=1280, height=720)

3、移動(dòng)鼠標(biāo)

由前面的知識(shí)我們知道,pyautogui是通過坐標(biāo)來移動(dòng)鼠標(biāo)的,所以移動(dòng)鼠標(biāo)就是通過傳遞不同的坐標(biāo)來進(jìn)行操作

a、移動(dòng)到絕對(duì)位置,duration的意思,在2s內(nèi)完成操作,建議這個(gè)參數(shù)大家要傳,不然會(huì)影響gui操作的穩(wěn)定性

pyautogui.moveTo(500,550,duration=2)

b、移動(dòng)到相對(duì)位置

pyautogui.moveRel(-100,-100,duration=3) 

4、獲取鼠標(biāo)當(dāng)前的坐標(biāo)

pyautogui.moveTo(500,550,duration=2)
?
print(pyautogui.position())
# Point(x=500, y=550)
pyautogui.moveRel(-100,-100,duration=3)
?
print(pyautogui.position())
# Point(x=400, y=450)

  

5、鼠標(biāo)的點(diǎn)擊操作

pyautogui.click(371,700,button="left")???#點(diǎn)擊左鍵
time.sleep(1)
pyautogui.click(1161,1161,button="left")
time.sleep(1)
pyautogui.click(790,273,button="right")??#點(diǎn)擊右鍵

鼠標(biāo)其他不常見的操作

pyautogui.mouseDown(button="left")
#按下鼠標(biāo)左鍵
pyautogui.mouseUp(button="right")
#松開鼠標(biāo)右鍵
pyautogui.doubleClick()
# 雙擊左鍵
pyautogui.rightClick()
# 雙擊右鍵
pyautogui.middleClick()
# 雙擊中鍵

6、鼠標(biāo)拖動(dòng)

可以操作畫圖的畫筆,或者拖動(dòng)文件

pyautogui.dragRel(100,200,duration=0.3,button="left")
pyautogui.dragTo(100,200,duration=0.3,button="left")

7、鼠標(biāo)滾動(dòng)操作

pyautogui.scroll(200)

pyautogui學(xué)習(xí):鍵盤操作

1、鍵盤錄入內(nèi)容

pyautogui.typewrite("hello python",interval=1)
pyautogui.typewrite(message="abcd")
pyautogui.typewrite(message=["!","A","^","1","2","3"]) 

message可以傳遞字符串和列表,同樣也會(huì)自動(dòng)處理大寫和特殊字符,同樣我們也建議也傳遞一個(gè)interval參數(shù),意思是輸入每個(gè)字符相隔幾秒鐘

2、特殊鍵該如何按呢

采用press方法

pyautogui.typewrite(message="abcd",interval=2)
pyautogui.press("enter")???#按下回車鍵
pyautogui.typewrite(message=["!","A","^","1","2","3"],interval=2)

同樣還有其他的特殊鍵,大家應(yīng)該一看就可以看的出來

esc
shiftleft
shiftright
altleft
altright
ctrlleft
ctrlright
tab
backspace
delete
pageup
pagedown

3、組合鍵該如何按呢?

可以采用下面的方法,先用keydown按下一個(gè)鍵,在按一個(gè)組合鍵,最后在用keyup松開鍵

pyautogui.press("enter")
pyautogui.typewrite("hello python",interval=0.2)
pyautogui.press("enter")
pyautogui.keyDown("shift")
pyautogui.press("5")
pyautogui.keyUp("shift")

  

?不過我們一般采用另外一個(gè)方法來做,就是熱鍵的方法。pyautogui會(huì)幫我們按下組合鍵,然后按照相反的順序松開鍵


客戶端自動(dòng)化測(cè)試解決方案的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
儋州市| 兰州市| 东乡县| 许昌县| 高陵县| 类乌齐县| 嵊泗县| 中卫市| 灌云县| 万盛区| 曲松县| 高台县| 诸城市| 威宁| 巴南区| 靖宇县| 浠水县| 辉南县| 上杭县| 库尔勒市| 长丰县| 保山市| 保靖县| 章丘市| 巴青县| 宝清县| 昌江| 安溪县| 临桂县| 南投市| 兰考县| 论坛| 寻甸| 金湖县| 繁峙县| 龙川县| 夏河县| 普兰店市| 崇礼县| 东辽县| 逊克县|