在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 數字轉換格式 預設...