⑴ 怎麼在用戶控制項中加腳本
你具體想怎麼做?
updatepanel實在是不好用啊,非要用的話,需要先將js文件附加在頁面上,然後用
ScriptManager
的RegisterClientScriptBlock
方法注冊腳本
⑵ 安卓手機自動化測試工具是什麼
一、首先說說手機自動化測試的原理
1、手機自動化測試的原理為PC上一個控制端(測試工具)與手機上的一個agent端,通過串口、USB或者無線方式將PC與手機終端相連,然後應用測試工具向手機發送請求或者命令,手機收到命令或者請求後,交給agent端解析,然後agent將這些解析的命令下發給手機的各個功能模塊所能識別的命令,調用那些功能模塊模擬操作。完成這些操作後,手機會返回一些信息,agent可以抓取這些信息,然後傳回給PC端,這樣就完成了一個完整的手機自動化測試。
2、關鍵點在於agent,有的公司是向自己的手機終端的軟體功能模塊中植入測試程序響應代碼,有的公司可以利用MMI_Command的方式來控制手機終端;原理就是給手機提供一個響應的介面。
3、而對於PC控制端,這個測試腳本用各種編程語言都可以,看如何定義
4、而又的自動化測試設計成錄制的機制,說通俗點,就是記錄手工操作的鍵盤信息或者LCD的操作信息(LCD需要用到智能識別機制)
5、自動化測試框架的搭建方法是通用的,你需要有一套自己的測試框架才能保證自動化測試的順利開展。
二、Android自動化測試方向:
1、CTS,CTS 測試基於Android instrumentation 測試, 其又基於JUnit 測試。說白了, CTS 就是一堆單元測試用例。這也是Java 語言的擅長部分。
2、 Monkey工具,Monkey是Android中的一個命令行工具,可以運行在模擬器里或實際設備中。它向系統發送偽隨機的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實現對正在開發的應用程序進行壓力測試。Monkey測試是一種為了測試軟體的穩定性、健壯性的快速有效的方法。
3、ASE,ASE 意思為Android 腳本環境, 即我們可以通過腳本(比如Python)調用Android 的功能,從而定製一些測試。比如打電話,發簡訊,瀏覽網頁,等。我們可以擴充它的API(Java 部分), 並用python 腳本調用這些API, 從而實現豐富的測試功能。用於API 部分可以訪問到Android 全部API, python 又能靈活部署測試,所以ASE 的擴展性非常好。
4、Robotium,該工具用於黑盒的自動化測試。可以在有源碼或者只有APK 的情況下對目標應用
進行測試。Robotimu 提供了模仿用戶操作行為的API,比如在某個控制項上點擊,輸入Text
等等。(推舉你可以研究一下這個工具,開源的,我有資料)
5、可以自己開發一個手機方面的自動化測試工具,原理上一樣
⑶ 游戲界面識別不了控制項 如何做自動化
游戲基本都是用OpenGl ES來繪制圖像的橘伏,所以是無法獲取控制項的。可以使圓培攜用點擊屏幕坐標這種方法進行自動化中者測試
⑷ 如何使用AutoIT完成單機測試
1. 識別窗口的方法
編寫自動化腳本的時候,首先要解決的一個問題就是如何(在眾多窗口中)准確識別出目標窗口。一般來說,我們常把窗口的標題(Title)作為它的識別方法。但有時候只給出窗口標題還不夠,還要同時給出標題及文件(text)。要獲得某個窗口的標題是件很簡單的事情(大多數窗口直接就可以看到),可以使用AutoIt提供的窗口信息工具(AutoIt Window Info)抓取。大多數窗口的標題都是顯而易見的,例如系統自帶的記事本程序(notedad.exe),它的默認標題是「無標題-記事本」,如圖所示。窗口標題及其文本是大小寫敏感的,包括標點符號在內,我們必須確保它們是完全匹配的。
AutoIt的大部分窗口函數都有窗口標題和文本參數,比如說下面的WinWaitActive函數。這個函數的功能是使腳本暫停執行並一直等到指定窗口出現且激活為止。
1
WinWaitActive(「窗口標題",["窗口文本"],[超時時間])
其中,「窗口標題」是必須指定的參數,而"窗口文本"和"超時時間"伏帶都是可選參數。不過,也有些函數的窗口文本參數是必須指定的,如果想省略這個參數,只須指定空字元串("")作為參數即可。在參數窗口文本中指定一個空字元串甚至沒有值(NULL),相當於告訴AutoIt任何文本都是有效的。
下面以記事本窗口為例說明上面提到的函數的兩種用法:
1
2
3
WinWaitActive(「無標題-記事本")
或
WinWaitActive(「無標題-記事本","")
2. 窗口句柄
AutoIt中的變數可用來存儲窗口句柄(Windows Handles)。所謂窗口句柄是指Windows自動分配給每個新創建的窗口的特殊值。窗口句柄可用來代替窗口標題參數。使用窗口句柄來代替窗口標題的好處是能夠更加精確地識別窗口,例如,有時候我們會同時打開同一應用程序的多個副本,這些窗口具有完全相同的窗口標題和窗口文本,這時就可以利用窗口句柄的唯一性來准確地識別所指定的窗口。
很多函數如WinGetHandle、WinList和GUICreate都會返回窗口句柄,示例:
1
2
$handle=WinGetHandle(「無標題-記事本」)
WinClose($handle)
注意:不管當前的WinTitleMatchMode被設置為何種模式,窗口句柄始終可用。
3. 識別控制項的方法
AutoIt提供了直接操作控制項的功能。窗口上能看到的東西大多數都是以下控制項中的一種:按鈕、列表框、文本編輯框、靜態文本等。例如,系統自帶的記事本程序的主窗口也只是一個相對而言比較大的「編輯框(Edit)」控制項罷了。正因為AutoIt提供了直接對控制項操作的功能,我們再也不須要使用模擬鍵擊等低級的方法來操作窗口了,這使得實現對窗口操作的腳本更加可靠。
AutoIt主要支持標準的Microosft控制項。有些應用程序使用了大量的自定義控制項,很像是標準的MS控制項,但卻無法被腳本程序識別,就需要特別的辦法來解決。
在使用Control…()函數時,一些控制項描述必須提供ControlID。通過這些描述才能正確識別控制項。這些描述包括:
ID,內部控制項的ID;
TEXT,控制項文本,如"下一步"按鈕;
CLASS,內部控制項的類的名稱,如"Edit"或"Button";
INSTANCE,枚舉;
CLASSNN,類別名,如"Edit1";
以上的屬性可以單獨使用,也可以組合起來使用。具體使用哪一種屬性,主要依據個人喜歡及從AutoIt窗口信息工具所獲得的信息類型。一般而言,最好的方法就是使用控制項ID,但如果控制項ID無法獲得或靠控制項ID還不足以保證能識別目標控制項,那麼就須要使用其他的屬性,或者屬性的組合。
例如,發送文本到記事本的第1個Edit控制項:
1
ControlSend(「無標題-記事本」,"","[CLASS:Edit;INSTANCE:1]」,"這是一些文本")
或
1
ControlSend(「無標題-記事本","","[CLASSNN:Edit1]」,"這是一些文本")
或
1
ControlSend(「無標題-記事本","","Edit1」,"這是一些文本")
單擊「我的窗口」裡面的控制項,得到控制項ID 254,就可以橋廳辯直接使用ID:
1
ControlClick(「我的窗口","","[ID:254]")
或
1
ControlClick(「我敏缺的窗口","",254)
例如單擊第2個包含「完成」文本的按鈕,就使用組合方法:
1
ControlClick(「我的窗口","","[CLASS:Button;TEXT:」完成";INSTANCE:2]")
如果要獲得某個控制項的句柄可使用ControlGetHandle函數。控制項句柄是Windows賦予控制項的獨一無二的標識符,即每個被創建的控制項都具有不同的句柄。示例如下:
1
$handle=ControlGetHandle(「Untitled- Notepad」,"","Edit1")
4. 操作窗口和控制項
確定了窗口和控制項的識別方法之後,我們就可以使用AutoIt提供的函數來完成對窗口和控制項的操作。常用的函數如下。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
激活指定的窗口(設置焦點到該窗口,使其成為活動窗口)
WinActive("窗口標題"[,"窗口文本"])
關閉指定窗口
WinClose("窗口標題"[,"窗口文本"])
移動指定的窗口或調整窗口的大小
WinMove("窗口標題","窗口文本"],X坐標,Y坐標[,寬度,[,高度[,速度]]])
顯示、隱藏、最小化、最大化或還原某個窗口
WinSetState("窗口標題","窗口文本",標志)
向指定控制項發送滑鼠點擊命令:
ControlClick("窗口標題","窗口文本」,控制項ID[,按鍵[,點擊次數[,X坐標[,Y坐標]]]])
向指定控制項發送命令:
ControlCommand("窗口標題","窗口文本",控制項ID,"命令"[,"選項"])
設置輸入焦點到指定窗口的某個控制項上:
ControlFocus("窗口標題","窗口文本",控制項ID)
向指定的控制項發送字元串:
ControlSend("窗口標題","窗口文本",控制項ID,"字元串"[,標志])
修改指定控制項的文本:
ControlSetText("窗口標題","窗口文本",控制項ID,"新文本",標志)
向激活窗口發送模擬鍵擊操作:
Send("按鍵"[,標志])
執行滑鼠點擊操作:
MouseClick("按鈕"[,X坐標,Y坐標[,點擊次數[,速度]]])
執行滑鼠拖拽操作:
MouseClickDrag("按鈕",X1坐標,Y1坐標,X2坐標,Y2坐標[,速度])
5.驗證
在完成測試用例的操作步驟之後,黑盒測試方法主要是通過檢查和比較軟體的輸出結果(包括界面、文件、數據等)來驗證測試的結果,判斷軟體是否存在缺陷。軟體界面的檢查主要是檢查軟體窗口和控制項的各種狀態、標題、文本和圖片等信息,並將檢查結果寫入最終的測試報告中,以供分析。
5.1 驗證窗口、控制項狀態常用的方法
1
2
3
4
5
6
7
8
9
10
獲取窗口控制項的坐標位置和大小等:
WinGetPos("窗口標題"[,"窗口文本"]) ;用於窗口
ControlGetPos("窗口標題","窗口文本",控制項ID) ;用於控制項
獲取窗口控制項的狀態(包括是否可見、是否激活、最大化、最小化等):
WinGetSate("窗口標題"[,"窗口文本"]) ;用於窗口
ControlCommand("窗口標題","窗口文本",控制項ID,選項) ;用於控制項
檢查窗口是否存在
WinExists("窗口標題"[,」窗口文本」])
5.2 驗證窗口、控制項文本常用的方法
1
2
3
4
5
6
7
8
獲取窗口的完整標題名:
WinGetTitle("窗口標題"[,"窗口文本"])
獲取窗口中的文本:
WinGetText("窗口標題"[,"窗口文本"])
獲取控制項上的文本:
ControlGetText("窗口標題","窗口文本",控制項ID)
5.3 驗證圖片或顯示效果的常用的方法
AutoIt沒有提供圖像比較函數,須要自己開發相應的函數。如果不準備開發這方面的功能,就只有將要檢查的圖像或效果用截屏的方法保存下來,並附在測試報告中,讓測試人員事後人工分析。
截取整個屏幕或指定區域:
1
2
3
4
5
_ScreenCapture_Capture("C:\Image1.jpg")
或
_ScreenCapture_Capture("C:\Image1.jpg",0,0,796,596)
或
_ScreenCapture_CaptureWnd("C:\Image1.jpg",窗口句柄)
事例:
1
2
3
4
#include <ScreenCapture.au3>
;用來保存圖像的路徑和文件名
$file="c:\ScreenCapture"&@MON & @MDAY & @HOUR & @MIN & @SEC&" .jpg"
_ScreenCapture_Capture($file);並保存到文件中
5.4 驗證文件常用的方法
1
2
3
4
5
6
7
8
檢查文件是否存在:
FileExists("路徑")
獲取文件大小:
FileGetSize("路徑")
獲取文件基本屬性(包括只讀,隱藏等):
FileGetAttrib("路徑")
5.5 其他驗證
1
2
3
4
5
返回當前滑鼠指針形狀的ID:
MouseGetCursor()
獲取當前滑鼠的坐標位置:
MouseGetPos([dimension])
6. 實例
下面這個腳本實例演示了如何打開計算器、找到計算器窗口、操作計算器完成「1+2」的計算和驗證,並將檢查的結果寫入測試報告中。
腳本如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Run("calc.exe")
WinWaitActive("計算器")
ControlClick("計算器","","1")
ControlClick("計算器","","+")
ControlClick("計算器","","2")
ControlClick("計算器","","=")
$Result=ControlGetText("計算器","",403)
if $Result=="3. " Then
FileWriteLine("C:\result.txt","正確:和期望結果3一致")
Else
FileWriteLine("C:\result.txt","錯誤:和期望結果3不一致,實際結果結果為"&$Result)
EndIf
WinClose("計算器")
⑸ 【工具】獲取窗口與控制項信息
常言道,工欲善其事,談塵脊必先利其器。在腳本中常見的一種操作是操作窗口或控制項,在操作之前,首先必須獲取目標的各種信息,這時就要用上輔助工具了。本文會介紹一些獲取窗口、控制項信息的常用工具,這里的先後順序是隨意安排。如果目前用的沒什麼問題就繼續用著,如果對某些地方不滿意則可試試其他。
簡單的截圖不容易全面反映整個工具兄叢的功能和特色,使用才能獲得真實體驗。
評論:這個最初來自於 AutoIt3 且安裝包中自帶的工具,就無需過多介紹了。功能簡陋,但無需獲取且使用還算方便(從托盤或主窗口菜單訪問),沒有特殊要求的情況下也基本夠了。下面介紹的工具一般都包含了這個工具的功能。
這是這里唯一一個在單個截圖含滲中包含所有功能且打開之後沒有額外操作的工具。
評論:這個工具我曾用過較長時間,不過現在看似乎比較中庸。
⑹ 按鍵,自動識別單個數字,並輸入,怎麼做這個腳本,顏色一樣。新手求教
一、如果可以讀取到出現數字的控制項,直接讀取,輸入。
二、如果不能讀取,用OCR的方法來識別圖片為數字,輸入。
OCR的方法:
1,可以使用插件。。。。
2,可以製作識別腳本。
祝你順利!
⑺ 分析一下autojs的坐標、控制項、找圖、找色
1~坐標點擊就是直接點擊某個點,這個點是固定的,所以在不同解析度兼容性差,所以不推薦使用,不詳說,主要說說其他幾個
2~控制項點擊是autojs左右特點的一項功能,它是基於安卓的無障礙功能的,在軟體上有很好的支持,但是游戲就不行了。具體的教程很多,不多說了,就說說我在使用時踩得一些坑。
①有些控制項能用autojs的工具找到,但是寫出來後卻識別不出來,手動滑動一下屏幕就能找到了,不知道是不是BUG,所以加個判斷,防止找不到腳本出錯
②尋找控制項建議不要用findOne()、waitFor()、exists()等一些會阻塞的方法,不然稍微出現一點其他事件就會阻塞,導致腳本莫名其妙的卡死,使用findOne(timeout)、findonce()時可以加個判斷在不為null的時候再點擊或其他操作,因為沒找到返回null,直接click就會報錯,腳本停止運行,要是是找的父或者子控制項也寫到判斷里
③找圖找色特別消耗內存,所以在能用控制項就用控制項,找圖找色在找到後要用recycle()來對創建的圖像對象回收,提高腳本穩定,讓腳本能持續運行更長時間,截圖也需要一定的時間
④如果腳本有懸浮窗,使用找圖要注意不要將要找的圖遮擋
⑤控制項中使用text比id要靠譜一些,在一些軟體中id是會改變的
ps:如果有問題可以在評論區評論,會的我會解答,不定時更新,可以點點關注和小心心哦
⑻ 在自動化測試中控制項不能識別怎麼辦
1、如果是因為自動化測試工具的限制,比如對於WinForm的控制項,有些自動化工具就不能識別,碰到這種情況,最好是看這個工具有沒有擴展可以用,比如 Silktest的。Net Framework擴展。如果不行,那隻能換自動化測試工具了。所以這個凸顯出在做自動化測試以前,選擇自動鋒跡睜化測試工具的重要性。
2、如果是因為控制項比較復雜,自動化工具可以識別,但是無法操作。這時我們可以通過Window API以及消息的方式來做,比如自己去調Window API來操作窗口,或者請開發實現一下消息的介面來給自動化工具調用等銀歲
3、跟開發溝通,讓他們的控制項支持IAccessible介面,然後我們通過MSAA來操作(如果是WPF控制項,則需要實現UIAutomation定義的一些介面)。不過一州態般情況下,除了微軟這樣對軟體的Accessible要求很高的公司,其它公司很少會花費時間來實現這個介面……。 另外扯一句,產品的Accessible的程度,實質上決定了一個公司能對產品做自動化測試的程度。
4、如果以上方法都不行,那隻有最後一個雙刃劍可以用了,就是滑鼠鍵盤模擬。理論上來說,只要用戶可以操作的東西,只要有界面,就可以通過滑鼠鍵盤模擬來實現(君不見N多游戲外掛的鍵盤滑鼠模擬大法)。就如雙刃劍一樣,這種做法是殺敵一千,自損八百。因為滑鼠鍵盤模擬非常依賴於當前激活的窗口以及游標位置和焦點位置,而且同步起來很困難。這也造成了後期維護成本很高。
⑼ 開發安卓用什麼工具
1、AndroidStudio
AndroidStudio是是基於IntelliJIDEA的谷歌開發Android應用開發集成開發環境(IDE)。有IntelliJ的代碼編輯器和開發者工具。AndroidStudio擁有很多可以提升安卓app開發效率的功能。
2、EclipseEclipse是程序員普遍使用的app開發工具,作為一個跨平台的開發平台,支持眾多插件,對比其他的固定的IDE軟體,具有非常高的自主性、靈活度,讓大家的安卓app開發更加高效。
3、是一個Android代碼語法高亮控制項,並且還支持lua擴展,同時,還可以自定義語言配置。
4、AppInventor
AppInventor也是谷歌出品的一款安卓app開發製作工具,使用起來更加簡單、易上手。5、AppPark(應用公園)
應用公園是國內領姿段先的app製作平台,和上面的安卓應用開發軟體不同,應用公跡枯譽園可以讓普通人也能自己製作出專業的app軟體。
傳統的app開發工具是讓程序員逐步敲代碼完成各個app功能模塊的開發,而且應用公園平台為大家提供了上百種開發的app通用功能模塊,用戶不用再重新開發,直接選擇需要的功能模塊,按照自己的app規劃,自由組合,然後上敗伏傳圖文內容,就能快速製作app。
5大安卓應用開發軟體盤點,普通人也能開發app了
而且應用公園平台還為大家提供了上百套開發好的app模板,可以直接使用,包括外賣配送、電商商城、新聞資訊、企業品牌、社交論壇等等。
利用應用公園自己製作app,幾天時間就能搞定,不需要專業的技術人員參與,普通人自己製作app,成本能節省90%以上。
⑽ 如何查看android studio 中的控制項
可以通過將 WebBrowser (WebView)控制項託管在應用程序中並使用其 Source 屬性或 Navigate(Uri) 方法更改該控制項的位置來實現該操作。 警告: 默認情況下,腳本在 WebBrowser 控制項中處於禁用狀態。如果您想在控制項中啟用腳本,請將 IsScriptEnabled 屬性設置為 true。 以下代碼示例顯示如何從 ", UriKind", UriKind.Absolute); 或者,也可以使用 WebBrowser(WebView)類的 Navigate(Uri) 方法來實現該目標: Wp8: webBrowser1.Navigate(new Uri("", UriKind.Absolute)); Win8: webView.Navigate(new Uri("", UriKind.Absolute)); 如果您選擇調用方法而不是設置屬性,那麼請記住,如果WebBrowser控制項尚不在可視化樹中,則會引發 InvalidOperationException。為了避免這個問題,您可以向 Loaded 事件附加一個處理程序,以確保在調用該方法之前此控制項位於可視化樹中。 .Loaded += (object sender, RoutedEventArgs e) => { webBrowser1.Navigate(new Uri("", UriKind.Absolute)); };webView1.Loaded += (object sender, RoutedEventArgs e) => { webView1.Navigate(new Uri("", UriKind.Absolute)); }; 2. 顯示靜態 Web 內容 您可以使用 WebBrowser (WebView)控制項在應用程序中顯示已設置格式的靜態內容。例如,開發人員可能希望在應用程序包中包含幫助文本,以便用戶可以隨時訪問。或者,您也可以使用 WebBrowser (WebView)控制項顯示應用程序已使用 SaveToString() 方法保存到獨立存儲的靜態 Web 內容。 向項目中添加靜態內容 向項目中添加靜態內容的步驟 1. 使用以下 HTML 代碼創建一個名為 readme.htm 的 HTML 文件: Sample Readme Content 2. 在 Visual Studio 中打開一個新的或現有的解決方案。 3. 在「解決方案資源管理器」中,右鍵單擊您項目的名稱,單擊「添加」,然後單擊「現有項」。 4. 導航到 readme.htm 文件的位置,選擇該文件,然後單擊「添加」。 5. 在「解決方案資源瀏覽器」中,單擊該文件的名稱。確認「屬性」窗口中的「生成操作」部分。 添加命名空間 在頁面後台代碼中添加以下資源以包含以下命名空間。例如,如果您對主頁使用默認命名約定,則應更新 MainPage.xaml.cs。 using System.IO.IsolatedStorage; using System.IO; using System.Windows.Resources; 添加 WebBrowser(WebView)控制項 可以使用工具添加 WebBrowser (WebView)控制項,也可以手動添加 WebBrowser (WebView)控制項。 使用工具添加 WebBrowser(WebView)控制項 使用工具添加辯肆 WebBrowser (WebView)控制項的步驟 1. 在 Visual Studio 中打開一個新的或現有的解決方案。 2. 查看項目的 XAML 文件時,單擊「工具箱」,將 WebBrowser (WebView)控制項拖動到設備的圖像中。 手動添加 WebBrowser(WebView)控制項 在 XAML 中創建 WebBrowser (WebView)控制項的步驟 1. 打開將在其中添加 WebBrowser (WebView)控制項的頁面的 XAML 文件。在「解決方案資源瀏覽器」中,右鍵單擊該頁面耐搭的 .xaml 文件(默認情況下,新應用程攜畝轎序的主頁名為「MainPage.xaml」),然後選擇「打開」。 2. 在 ContentGrid 中添加一個 WebBrowser (WebView)控制項。例如: Wp8: Win8: 添加向獨立存儲中添加文件的代碼 修改頁面後台代碼以包含以下兩個函數,這兩個函數將幫助向獨立存儲中添加靜態文件。例如,如果您對主頁使用默認命名約定,則應更新 MainPage.xaml.cs。 private void SaveFilesToIsoStore() { //These files must match what is included in the application package, //or BinaryStream.Dispose below will throw an exception. string[] files = { "readme.htm" }; IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); if (false == isoStore.FileExists(files[0])) { foreach (string f in files) { StreamResourceInfo sr = Application.GetResourceStream(new Uri(f, UriKind.Relative)); using (BinaryReader br = new BinaryReader(sr.Stream)) { byte[] data = br.ReadBytes((int)sr.Stream.Length); SaveToIsoStore(f, data); } } } } private void SaveToIsoStore(string fileName, byte[] data) { string strBaseDir = string.Empty; string delimStr = "/"; char[] delimiter = delimStr.ToCharArray(); string[] dirsPath = fileName.Split(delimiter); //Get the IsoStore. IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication(); //Re-create the directory structure. for (int i = 0; i < dirsPath.Length - 1; i++) { strBaseDir = System.IO.Path.Combine(strBaseDir, dirsPath[i]); isoStore.CreateDirectory(strBaseDir); } //Remove the existing file. if (isoStore.FileExists(fileName)) { isoStore.DeleteFile(fileName); } //Write the file. using (BinaryWriter bw = new BinaryWriter(isoStore.CreateFile(fileName))) { bw.Write(data); bw.Close(); } }