dogtail的使用方法(三) 啟動應用

2022-07-20 21:03:14 字數 1507 閱讀 3616

在ui自動化測試中,一切操作的都是從應用啟動開始的,而在linux桌面應用自動化測試中,我們啟動應用的方法有多種,下面做乙個簡單的介紹:

dogtail提供了應用啟動的方法,在utils庫中,使用run方法啟動:

首先匯入方法:

from dogtail.utils import *
呼叫run方法

run('deepin-music')
即可啟動**

這種方法的優點是採用程序的方式直接啟動,不依賴與ui,無論桌面或工作列上是否存在應用圖示,都可以正常啟動。

但是在實際專案中,仍然存在乙個問題,

如果使用ssh遠端呼叫,或者jenkins中執行測試指令碼的時候,在sniff中會出現找不到應用,經過分析,可能是因為使用這種方法啟動的時候,實際是採用乙個子程序啟動了應用,dogtail無法識別到。

使用dogtail點選工作列上的應用圖示

通常有兩種方法:

(1)使用dogtail點選工作列上的應用圖示。

(2)已知應用圖示在工作列上的位置,然後使用滑鼠點選對應座標。

第二種方法的缺點是位置必須固定,如果移動位置就不行了,而使用第一種方法,無論位置在**,只要圖示在工作列上存在即可。

桌面圖示目前是採用影象識別技術,定位到應用圖示的座標,然後通過pyauogui進行點選操作。

詳細技術方案可以參考我的另外兩篇部落格:

基於opencv的模板匹配實現影象識別,返回在螢幕中的座標

python三方庫pyautogui的使用方法

啟動中啟動的實現邏輯實際和工作列上啟動差不多。

首先,需要使用滑鼠點選工作列上的啟動器圖示,或者鍵盤super鍵,將啟動器撥出來,

然後,在啟動器中點選對應的圖示,

但是這裡有個問題,啟動器中的應用列表,一頁展示不完,所以如果我們要點選的應用圖示不在第一頁怎麼辦,通常解決方案有兩種:

(1)需要進行向下滑動,這裡就涉及到相應的識別方案,判斷如果不在第一頁就往下滑動翻頁。

(2)啟動器提供搜尋的功能,輸入應用名稱搜尋,然後進行點選。

從實際操作中來看,採用第二種方法的效率會高一點。

在python中,使用os.popen()或os.system()或者subprocess.popen(),實現命令列啟動,比如:

import os

os.popen('deepin-music')

這種方式啟動是比較簡單的,但是在實際專案中,仍然存在遠端執行指令碼的時候,dogtail無法識別的問題。

以上幾種方法,各有優缺點,在實際專案中:

(1)如果需要在jenkins中做持續整合,建議使用第二種工作列啟動的方法。

(2)如果不會採用遠端執行的,建議採用第一種或者最後一種方案。

(3)第三種和第四種啟動方法,通常在測試用例中會涉及到,所以偶爾會用。

launch啟動檔案的使用方法

launc 件 指令碼,可以把很多節點的啟動寫進去 1 launc 件中的根元素採用標籤定義 2 pkg 節點所在的功能包名稱 type 節點的可執行檔名稱 name 節點執行時的名稱,執行同乙個功能包節點,名字就可以不一樣了 output 是否列印 respawn 啟動執行掛掉,是否重啟 requ...

指標的使用方法 三

下面介紹指標與陣列的關係 指向一維陣列的指標 指向多維陣列的指標 指向字串的指標 1.指向陣列元素的指標變數的定義方式 型別 指標變數名 例如 int p 例如 int a 10 p p a 或 p a 0 圖示 指向陣列的指標的加減運算 p p指標移動p所指向型別的位元組,p所指向的是int型陣列...

awk的使用方法 三

常用的awk內建變數 序號 名稱 描述 1 argc 命令列引數的數目。2 ar 包含命令列引數的陣列。3 argind 當前被處理的檔案的ar 的index 從0開始算 4 binmode 在non posix系統中,檔案的i o指定使用 binary 模式。5 convfmt 數字轉換格式 預設...