基于圖像的應(yīng)用自動化的制作方法
【專利摘要】在一種實施方式中,基于圖像的應(yīng)用自動化系統(tǒng)在第一時間確定:來自與輸入事件相關(guān)聯(lián)的多個圖像中的第一圖像不滿足圖形用戶界面的任何部分。然后,該基于圖像的應(yīng)用自動化系統(tǒng),獨立于用戶輸入,在第一時間之后從所述多個圖像中選擇第二圖像,并且識別該第二圖像所滿足的該圖形用戶界面的一部分。
【專利說明】基于圖像的應(yīng)用自動化
【背景技術(shù)】
[0001] 一些基于圖像的應(yīng)用(或軟件)自動化系統(tǒng)包括記錄階段和重放階段。在記錄階 段,基于圖像的應(yīng)用自動化系統(tǒng)記錄用于將在重放階段期間被自動化的應(yīng)用的動作。例如, 基于圖像的應(yīng)用自動化系統(tǒng)在用戶圖形界面檢測輸入事件,并且響應(yīng)于每個輸入事件而捕 捉圖形用戶界面的圖像。經(jīng)常地,基于圖像的應(yīng)用自動化系統(tǒng)然后會定義用于每個輸入事 件的自動化動作,該自動化動作指定用于該輸入事件的圖像,并且在記錄階段期間定義的 自動化動作被存儲在腳本文件內(nèi)。
[0002] 在重放階段期間,基于圖像的應(yīng)用自動化系統(tǒng)執(zhí)行在記錄階段期間所記錄的動 作。例如,基于圖像的應(yīng)用自動化系統(tǒng)能識別腳本文件內(nèi)的自動化動作并且重放在自動化 動作中指定的輸入事件。這就是說,對于每個自動化動作,基于圖像的應(yīng)用自動化系統(tǒng)識別 與該自動化動作中所指定的圖像相匹配的應(yīng)用的圖形用戶界面的一部分,并且在該應(yīng)用的 該部分處執(zhí)行輸入事件。
【專利附圖】
【附圖說明】
[0003] 圖1是根據(jù)一種實施方式的執(zhí)行輸入事件的過程的流程圖。
[0004] 圖2是根據(jù)一種實施方式的將一組圖像與輸入事件相關(guān)聯(lián)的過程的流程圖。
[0005] 圖3A是根據(jù)一種實施方式的具有處于第一狀態(tài)的圖形用戶界面元素的圖形用戶 界面的一部分的圖示。
[0006] 圖3B是根據(jù)一種實施方式的具有處于第二狀態(tài)的圖形用戶界面元素的圖3A的圖 形用戶界面的該部分的圖示。
[0007] 圖3C是根據(jù)一種實施方式的具有處于第三狀態(tài)的圖形用戶界面元素的圖3A及3B 的圖形用戶界面的該部分的圖示。
[0008] 圖4A是根據(jù)一種實施方式的包括圖3A的圖形用戶界面元素的圖像的圖示。
[0009] 圖4B是根據(jù)一種實施方式的包括圖3B的圖形用戶界面元素的圖像的圖示。
[0010] 圖4C是根據(jù)一種實施方式的包括圖3C的圖形用戶界面元素的圖像的圖示。
[0011] 圖5是根據(jù)一種實施方式的自動化動作的圖示。
[0012] 圖6是根據(jù)一種實施方式的將圖像指定為輸入事件的目標(biāo)的過程的流程圖。
[0013] 圖7是根據(jù)一種實施方式的基于圖像的應(yīng)用自動化系統(tǒng)的示意框圖。
[0014] 圖8是根據(jù)一種實施方式的托管(host)基于圖像的應(yīng)用自動化系統(tǒng)的計算設(shè)備 的示意框圖。
【具體實施方式】
[0015] 當(dāng)基于圖像的應(yīng)用(或軟件)自動化系統(tǒng)不能將與輸入事件相關(guān)的圖像與圖形用 戶界面的一部分匹配時,這樣的系統(tǒng)會遭受失敗。例如,輸入事件可以與具有多個狀態(tài)(例 如,視覺外觀)的圖形用戶界面元素相關(guān)(或在其處被執(zhí)行)。作為具體示例,該輸入事件 可以與按鍵控件相關(guān),該按鍵控件具有當(dāng)光標(biāo)(例如,鼠標(biāo)指針)沒有懸停在該按鍵控件之 上時的第一外觀,以及當(dāng)光標(biāo)懸停在該按鍵控件之上時的第二外觀。相應(yīng)地,響應(yīng)于諸如在 該按鍵控件處的鼠標(biāo)按鍵按下輸入事件之類的輸入事件而被捕捉的按鍵控件的圖像將包 括:處于第二視覺外觀(或狀態(tài))的按鍵控件,這是因為當(dāng)鼠標(biāo)按鍵按下輸入事件在該按鍵 控件處執(zhí)行時,鼠標(biāo)指針懸停在該按鍵控件之上。
[0016] 然而,在重放階段期間,當(dāng)基于圖像的應(yīng)用自動化系統(tǒng)試圖在該按鍵控件處重放 包括鼠標(biāo)按鍵按下輸入事件(例如,重放在自動化動作中指定的鼠標(biāo)按鍵按下輸入事件) 的自動化動作時,鼠標(biāo)指針可能不在按鍵控件之上懸停。作為結(jié)果,該按鍵控件是處于第一 視覺外觀,但是鼠標(biāo)按鍵按下輸入事件的圖像包括處于第二視覺外觀的該按鍵控件。因此, 基于圖像的應(yīng)用自動化系統(tǒng)將很可能無法將該圖像與該按鍵控件匹配,并且重放階段對于 該自動化動作而言將會失敗。
[0017] 在此討論的實施方式確定圖形用戶界面不包括與輸入事件相關(guān)聯(lián)的一個圖像所 滿足的部分,并且自動地(即,獨立于來自用戶的輸入)確定是否該用戶圖形界面包括與該 輸入事件相關(guān)聯(lián)的另一個圖像所滿足的部分。
[0018] 例如,一組圖像中的每一個圖像可包括圖形用戶界面元素,在該圖形用戶界面元 素處,處于多種狀態(tài)中的一種狀態(tài)的基于圖像的應(yīng)用自動化系統(tǒng)的重放階段期間,輸入事 件將被執(zhí)行。圖像中的一個能夠被指定為輸入事件的目標(biāo)。如果,在重放階段期間,被指 定為目標(biāo)的圖像不滿足圖形用戶界面的任何部分,則能夠從該組圖像中選擇不同的圖像。 如果該圖像滿足圖形用戶界面的一部分,則該輸入事件可在圖形用戶界面的該部分處被重 放。在一些實施方式中,該圖像還可被指定為輸入事件的目標(biāo)。如果該圖像不滿足圖形用 戶界面的任何部分,則來自該組圖像的又另一個圖像能夠被選擇。該過程可被重復(fù)直至滿 足(或匹配)圖形用戶界面的一部分的圖像被找到,或者該組圖像中的所有圖像都已經(jīng)被 選擇。
[0019] 圖1是根據(jù)一種實施方式的執(zhí)行輸入事件的過程的流程圖。過程100可例如在如 圖7或圖8中圖示的基于圖像的應(yīng)用自動化系統(tǒng)之類的基于圖像的應(yīng)用自動化系統(tǒng)中被執(zhí) 行或托管。基于圖像的應(yīng)用自動化系統(tǒng)實施過程100,在塊110處確定:圖形用戶界面(GUI) 未被與輸入事件關(guān)聯(lián)或相關(guān)的第一圖像所滿足。換言之,基于圖像的應(yīng)用自動化系統(tǒng)確定 ⑶I不包括與第一圖像相匹配的任何部分。
[0020] 如此處所使用的,術(shù)語"圖像"意思是某一主題(例如,⑶I、⑶I的一部分,或⑶I 元素)的表示,其基于該主題的視覺外觀。另外,主題的圖像的拷貝或變換(例如,改變的 顏色空間、尺寸、寬高比或比率)也是該主題的圖像。
[0021] 另外,如此處所使用的,如果圖像包括⑶I的一部分的表示,則該圖像被稱為滿足 (或匹配)⑶I的該部分。換言之,如果圖像包括⑶I的一部分,則該圖像滿足⑶I的該部分。 與GUI的該部分自身相比,包括在該圖像中的GUI的該部分(或其表示)能夠具有不同的顏 色方案(例如,灰度級而不是彩色),不同的比例,不同的尺度(具有不同的尺寸),或具有 圖像中的其它視覺變化,盡管如此,該圖像也被稱為滿足GUI的該部分(或滿足該GUI)。例 如,基于圖像的應(yīng)用自動化系統(tǒng)能夠使用圖像處理技術(shù),例如邊緣檢測、文本或符號識別、 漢明距離估計、像素值比較、尺寸重置、特征比較、和/或其它方法來比較圖像和⑶I的一部 分(或者表示該GUI的該部分的另一圖像)以便確定該第一圖像不滿足該GUI的任何部分。
[0022] 出于很多原因,該第一圖像不能滿足⑶I的任何部分。例如,該第一圖像可包括在 處于第一狀態(tài)的一 GW元素,例如當(dāng)光標(biāo)(例如,鼠標(biāo)指針)在該⑶I元素之上懸停時的視 覺外觀。當(dāng)在基于圖像的應(yīng)用自動化系統(tǒng)中,塊110被處理時,該GUI元素可以處于不同的 狀態(tài)。例如,該光標(biāo)可以在不同的⑶I元素之上懸停。相應(yīng)地,該第一圖像不滿足該⑶I元 素,這是因為第一圖像中的該⑶I元素的視覺外觀不與此刻該⑶I處的該⑶I元素的視覺 外觀相匹配。
[0023] 響應(yīng)于塊110,在塊120,基于圖像的應(yīng)用自動化系統(tǒng)選擇與該輸入事件相關(guān)的第 二圖像。例如,基于圖像的應(yīng)用自動化系統(tǒng)可基于圖像之中的優(yōu)先級;基于規(guī)則、參數(shù)或偏 好;或使用用來選擇第二圖像的其它方法來從與輸入事件相關(guān)聯(lián)的一組圖像中選擇第二圖 像。例如,每個圖像可具有相關(guān)聯(lián)的時間戳(例如,絕對時間或相對于在圖像被產(chǎn)生或捕捉 的輸入事件時間的時間),并且該第一圖像可被指定為輸入事件的目標(biāo)。基于圖像的應(yīng)用自 動化系統(tǒng)可在第一圖像之前或之后(時間上)立即從該組圖像中選擇圖像作為第二圖像。
[0024] 在一些實施方式中,基于圖像的應(yīng)用自動化系統(tǒng)獨立于用戶輸入而選擇第二圖 像。如此處使用的,術(shù)語"獨立于用戶輸入","獨立于用戶",以及類似的術(shù)語或短語,意思是 動作是響應(yīng)于不同于用戶輸入的刺激而發(fā)生。此處,例如,該刺激是確定第一圖像不滿足該 ⑶I的一部分。
[0025] 換言之,基于圖像的應(yīng)用自動化系統(tǒng)在塊110確定第一圖像不滿足該⑶I,并且繼 續(xù)在塊120處選擇第二圖像而不需要實時的(例如,在塊110和120之間接收的,或作為塊 120的一部分的)用戶輸入。這并不是暗示先前的用戶輸入并不或不能影響第二圖像的選 擇。例如,基于圖像的應(yīng)用自動化系統(tǒng)可選擇基于更早的用戶輸入所選擇的圖像,例如,建 立用來選擇第二圖像的與該輸入事件相關(guān)聯(lián)的一組圖像之中的優(yōu)先級、或規(guī)則、參數(shù)或偏 好的用戶輸入。從而,盡管選擇標(biāo)準(zhǔn)可被用戶輸入所規(guī)定,由基于圖像的應(yīng)用自動化系統(tǒng)所 做的選擇是獨立于用戶輸入的。
[0026] 在第二圖像被選擇之后,在塊130處,由第二圖像所滿足的該⑶I的一部分被識 另IJ。換言之,使用圖像分析技術(shù)或方法,例如上文討論的與塊110相關(guān)的那些技術(shù)或方法, 基于圖像的應(yīng)用自動化系統(tǒng)識別第二圖像所滿足的該GUI的一部分。
[0027] 例如,如上文所述,該第一圖像可包括處于第一狀態(tài)的⑶I元素,并且當(dāng)塊110被 執(zhí)行時,該GUI元素可處于第二狀態(tài)。該第二圖像可包括處于第二狀態(tài)的該GUI元素。換 言之,第一圖像可包括處于一種狀態(tài)的該⑶I元素(或⑶I的一部分),并且第二圖像可包 括處于另一狀態(tài)的該⑶I元素。相應(yīng)地,與輸入事件相關(guān)聯(lián)的圖像均可包括⑶I元素(或 GUI的一部分),在其處,將在一種或多種狀態(tài)下執(zhí)行輸入事件。從而,基于圖像的應(yīng)用自動 化系統(tǒng)可使用這些圖像來識別該⑶I元素,例如,即使該⑶I元素具有多種可能的狀態(tài)。
[0028] 然后在塊130中所識別的⑶I的該部分處,該輸入事件在塊140被執(zhí)行。換言之, 與包括第一圖像和第二圖像的一組圖像相關(guān)聯(lián)的該輸入事件相對于在塊130所識別的⑶I 的該部分被執(zhí)行。
[0029] 使用多種方法,輸入事件可在(或相對于)⑶I的一部分被執(zhí)行。例如,基于圖像的 應(yīng)用自動化系統(tǒng)可請求輸入事件的模擬或觸發(fā),例如鼠標(biāo)按鍵點擊事件、鍵按下事件、手勢 事件或在托管其處實施該GUI的應(yīng)用的操作系統(tǒng)處的某其它輸入事件。作為另一個例子, 基于圖像的應(yīng)用自動化系統(tǒng)可以在例如Microsoft Remote Desktop Connection?(RDC)或 虛擬網(wǎng)絡(luò)計算(VNC)的桌面共享系統(tǒng)或應(yīng)用中,通過向桌面共享系統(tǒng)(例如,向桌面共享系 統(tǒng)的服務(wù)器應(yīng)用)發(fā)送命令或指令來觸發(fā)輸入事件。作為又一個例子,基于圖像的應(yīng)用自 動化系統(tǒng)可以向用于操作系統(tǒng)或其處實施該GUI的應(yīng)用的輸入事件隊列中注入表示輸入 事件的命令、信號或數(shù)據(jù)集。
[0030] 圖1圖示的過程100是示例實施方式。在其它實施方式中,過程100可包括另外 的和/或不同的塊/步驟。例如,過程100可包括位于塊130和140之間的轉(zhuǎn)換塊,在其中 相對于基于圖像的應(yīng)用自動化系統(tǒng)的GUI的坐標(biāo)系統(tǒng)被轉(zhuǎn)換為相對于例如其處托管實施 該的應(yīng)用的操作系統(tǒng)的坐標(biāo)系統(tǒng)。作為特定示例,基于圖像的應(yīng)用自動化系統(tǒng)可通過 桌面共享系統(tǒng)來訪問GUI,并且可通過桌面共享系統(tǒng)訪問的GH的分辨率可相對于該GH的 實際分辨率被降低?;趫D像的應(yīng)用自動化系統(tǒng)可以將其處應(yīng)執(zhí)行該輸入事件的位置(例 如,笛卡兒坐標(biāo)位置)從由通過桌面共享系統(tǒng)所訪問的GUI的分辨率所定義的空間變換或 映射(例如,使用線性變換)為由GUI的實際分辨率所定義的空間。
[0031] 圖2是根據(jù)一種實施方式的將輸入事件與一組圖像關(guān)聯(lián)的過程的流程圖。在塊 210處檢測輸入事件。輸入事件是發(fā)生在諸如計算設(shè)備之類的系統(tǒng)處的輸入。例如,輸入事 件的生成可例如基于:諸如鼠標(biāo)指針的輸入設(shè)備的移動;與觸控板、觸摸敏感顯示屏或接 近敏感設(shè)備的交互(例如,觸摸、在其處執(zhí)行手勢或相對其的移動);鼠標(biāo)或鍵盤按鍵動作 (例如,鼠標(biāo)按鍵的壓下或釋放);或其它輸入,例如來自運動敏感設(shè)備(如,加速計或陀螺 儀)或音頻輸入設(shè)備(如,麥克風(fēng))的輸入。
[0032] 這樣的輸入事件經(jīng)常相對于圖形用戶界面(⑶I)或圖形用戶界面的元素(⑶I元 素)被執(zhí)行。例如,用戶可以與GUI元素交互(例如,使用鼠標(biāo)或觸摸敏感設(shè)備在GUI元素 上點擊)來生成相對于該⑶I元素的輸入事件。作為另一個例子,GW元素可以具有或可 以是⑶I的輸入焦點(例如,響應(yīng)于該⑶I元素的先前用戶選擇),并且在CTI具有所述輸 入焦點時發(fā)生的或被檢測的輸入事件是相對于該元素。相應(yīng)地,輸入事件可被稱為相 對于、發(fā)生在在GUI的各部分或GUI的各元素或在GUI的各部分或GUI的各元素處被執(zhí)行。
[0033] GUI是用戶界面,其允許用戶使用對象的圖形表示而不是文本命令來與系統(tǒng)(例 如,計算設(shè)備)交互。例如,用戶可以將光標(biāo)移動到按鍵的圖形表示,并且使用鼠標(biāo)或觸摸 敏感設(shè)備按下和釋放該按鍵的圖形表示。
[0034] 這樣的圖形表示在比被稱為圖形用戶界面元素(或⑶I元素)。⑶I元素是⑶I的 一部分,在這里,用戶可以向⑶I提供輸入。例如,⑶I元素可以是控件,例如按鈕或按鍵、單 選按鍵、復(fù)選框、文本字段或框、下拉列表、微調(diào)器(微調(diào)控件)、滑動條、圖標(biāo)、樹控件、滾動 條、超級鏈接、或其它控件。作為另一個例子,GUI元素可以是GUI容器,其包括其它的GUI 元素,例如窗口、視窗、對話框、框架、選項卡、菜單或某其它容器。
[0035] 經(jīng)常地,坐標(biāo)系統(tǒng)(例如笛卡爾坐標(biāo)系統(tǒng))與⑶I相關(guān)聯(lián)。例如,⑶I的左上角可 以被指定為原點并且使用數(shù)組(〇,〇)來描述。⑶I的每個點(經(jīng)常對應(yīng)于輸出該CTI的諸如 計算機監(jiān)控器之類的顯示器的每個像素)然后可以使用相對于原點的坐標(biāo)來描述。例如, 對于在具有像素分辨率為2920X2080的計算機監(jiān)控器上顯示的⑶I,⑶I左上角的點被描 述為(〇,〇),⑶I左下角的點被描述為(0, 2080),⑶I右上角的點被描述為(1920,0),并且 ⑶I右下角的點被描述為(1920,2080)。相應(yīng)地,輸入事件可包括輸入事件所發(fā)生于的⑶I 的位置(或多個位置)的描述。例如,光標(biāo)移動的輸入事件可指定一個坐標(biāo)集,其指示移動 從何處開始(例如,在移動之前的光標(biāo)位置),以及另一坐標(biāo)集合,其指示該移動在何處停 止。
[0036] 基于圖像的應(yīng)用自動化系統(tǒng)實施過程200可以在塊210處使用多種方法來檢測輸 入事件。例如,基于圖像的應(yīng)用自動化系統(tǒng)可以向操作系統(tǒng)注冊(例如,使用操作系統(tǒng)的應(yīng) 用編程接口(API))以接收通知或信號,例如,系統(tǒng)信號、函數(shù)調(diào)用、或包括輸入事件的描述 的方法調(diào)用(例如,輸入事件的分類類型標(biāo)識符,例如鍵盤的哪個按鍵被按下的輸入事件 的描述,和/或輸入事件的位置)。作為另一個例子,當(dāng)外圍設(shè)備(例如,鼠標(biāo),諸如觸控板 之類的觸摸或接近敏感設(shè)備,實體鍵盤,或諸如屏幕上鍵盤之類的虛擬鍵盤)向計算設(shè)備 提供信號或通知以指示輸入事件已經(jīng)在那些外圍設(shè)備處發(fā)生時,基于圖像的應(yīng)用自動化系 統(tǒng)可以與一個或多個設(shè)備驅(qū)動器通信來接收通知或信號。作為再一個例子,基于圖像的應(yīng) 用自動化系統(tǒng)可以指示操作系統(tǒng)(例如,鉤掛(hook)操作系統(tǒng)的輸入事件處理例程或提供 設(shè)備驅(qū)動器)來截獲與輸入事件相關(guān)的并且由操作系統(tǒng)或設(shè)備驅(qū)動器所生成的通知或信 號。
[0037] 在輸入事件在塊210處被檢測后,在塊220處將多個圖像與輸入事件相關(guān)聯(lián)。換 言之,基于圖像的應(yīng)用自動化系統(tǒng)實施過程200定義或建立輸入事件與兩個或更多圖像之 間的關(guān)系。例如,輸入事件的描述和將與輸入事件相關(guān)聯(lián)的每個圖像的標(biāo)識符(例如,統(tǒng)一 資源標(biāo)識符(URI)、文件系統(tǒng)路徑、或文件名)可被存儲在自動化動作。自動化動作表示在 重放階段期間將被重放的輸入事件。作為例子,自動化動作可被表示為或存儲為腳本文件、 擴展標(biāo)記語言(XML)元素或XML元素組、或基于圖像的應(yīng)用自動化系統(tǒng)處的數(shù)據(jù)結(jié)構(gòu)的一 部分。自動化動作例如在圖5中被更詳細(xì)地討論。
[0038] 在一些實施方式中,與輸入事件相關(guān)聯(lián)的圖像在記錄階段期間在不同時間按時間 順序生成,或以這樣的圖像為基礎(chǔ)。例如,基于圖像的應(yīng)用自動化系統(tǒng)實施過程200能生成 GUI的圖像(例如,執(zhí)行抓屏或相對于GUI的屏幕快照),例如以每隔一秒或每300毫秒的 間隔來生成??商鎿Q地,例如,基于圖像的應(yīng)用自動化系統(tǒng)實施過程200可以響應(yīng)于諸如移 動輸入事件之類的輸入事件而生成⑶I的圖像。
[0039] 在一些實施方式中,在記錄階段期間生成的每個圖像由基于圖像的應(yīng)用自動化系 統(tǒng)所緩存或歸檔。在一些實施方式中,基于圖像的應(yīng)用自動化系統(tǒng)實施過程200包括固定 長度隊列,其中存儲了最近生成的圖像。另外,在一些實施方式中,基于圖像的應(yīng)用自動化 系統(tǒng)實施過程200還響應(yīng)于在塊210處檢測的輸入事件而生成⑶I的圖像。另外,基于圖 像的應(yīng)用自動化系統(tǒng)實施過程200在輸入事件被檢測到之后能繼續(xù)生成GUI的圖像。
[0040] 與輸入事件相關(guān)聯(lián)的圖像的數(shù)量可根據(jù)不同的實施方式而變化,基于例如輸入事 件的類型或分類、用戶定義或可配置的參數(shù)、預(yù)定義的參數(shù)或其它標(biāo)準(zhǔn)。另外,與輸入事件 相關(guān)聯(lián)的圖像包括其處執(zhí)行該輸入事件的⑶I的部分或⑶I元素。另外,如上所述,與輸入 事件相關(guān)聯(lián)的圖像可包括處于不同狀態(tài)的GUI的部分或GUI元素。另外,與輸入事件相關(guān) 聯(lián)的圖像可以以輸入事件的發(fā)生位置為中心。更具體地,例如,基于圖像的應(yīng)用自動化系 統(tǒng)能夠基于包括在該輸入事件或先前輸入事件的描述中的位置信息來識別輸入事件在GUI 處的位置。
[0041] 基于圖像的應(yīng)用自動化系統(tǒng)然后可以生成將與輸入事件相關(guān)聯(lián)的一組圖像。例 如,基于圖像的應(yīng)用自動化系統(tǒng)能識別圍繞該位置的GUI的一部分或GUI元素。作為特定 例子,使用邊緣檢測或其它圖像處理分析方法,基于圖像的應(yīng)用自動化系統(tǒng)能夠識別包括 或圍繞該位置的GUI元素。作為另一個例子,通過定義包括該位置或以該位置為中心的矩 形、橢圓、多邊形或其它形狀,基于圖像的應(yīng)用自動化系統(tǒng)能夠識別GUI的一部分?;趫D 像的應(yīng)用自動化系統(tǒng)然后可以生成包括⑶I的該部分或⑶I元素的一組圖像,例如,通過: 訪問在該輸入事件之前被捕捉的兩個圖像、響應(yīng)于該輸入事件而被捕捉的圖像、以及在輸 入事件之后被捕捉的圖像;生成這些圖像的拷貝;以及圍繞所識別的⑶I部分或⑶I元素 來裁減圖像拷貝(例如,基于為每個圖像適當(dāng)縮放的的坐標(biāo)系統(tǒng))。裁減的圖像然后可 與上述輸入事件相關(guān)聯(lián),和/或存儲在數(shù)據(jù)庫中。
[0042] 如上所述,根據(jù)多個實施方式,圖像拷貝可被裁減為具有多個維度或形狀。另外, 圖像拷貝可圍繞一位置(或點)而不是輸入事件的位置來被裁減。換言之,裁減的圖像拷貝 能夠以⑶I的一位置而不是輸入事件的位置為中心。在這樣的實施方式中,基于圖像的應(yīng) 用自動化系統(tǒng)在重放階段期間,在適當(dāng)偏離這樣的圖像的中心的一位置處重放輸入事件, 從而使得該輸入事件在與記錄階段期間該輸入事件的發(fā)生位置相同的位置處被重放。如在 此使用的,第二位置與第一位置相同,如果第二位置與第一位置相同或者與第一位置足夠 相似或接近而使得在⑶I或⑶I元素處第二位置的輸入事件與第一位置的該輸入事件將具 有相同的效果的話。
[0043] 來自在塊220處與輸入事件相關(guān)聯(lián)的圖像中的一圖像然后在塊230處被指定為輸 入事件的目標(biāo)。輸入事件的目標(biāo)是在重放階段期間應(yīng)當(dāng)被使用來識別GUI的該部分的圖 像,其中與該圖像相關(guān)聯(lián)的輸入事件應(yīng)當(dāng)針對GUI的該部分被應(yīng)用或執(zhí)行。
[0044] 該目標(biāo)可使用多種方法被指定。例如,響應(yīng)于輸入事件而生成的圖像可通過在用 于該輸入事件的自動化動作處在與輸入事件相關(guān)聯(lián)的圖像列表中首先列出該圖像的標(biāo)識 符而被指定為輸入事件的目標(biāo)。在其它實施方式中,自動化動作可包括一字段,在該處作為 輸入事件的目標(biāo)的圖像的標(biāo)識符(例如,輸入事件標(biāo)識符)可被包括在內(nèi)。作為再一例子, 可以為作為輸入事件的目標(biāo)的圖像設(shè)置目標(biāo)標(biāo)記或?qū)傩?,并且對于與輸入事件相關(guān)聯(lián)的每 個其它圖像可重置目標(biāo)標(biāo)記或?qū)傩浴?br>
[0045] 另外,被指定為輸入事件的目標(biāo)的圖像可基于多種方法而被選擇。例如,在輸入事 件之后生成的圖像可被指定為目標(biāo)。作為另一例子,響應(yīng)于輸入事件而被生成的圖像可被 指定為目標(biāo)。作為再一例子,在輸入事件之前或之后預(yù)定的秒數(shù)或毫秒數(shù)所生成的圖像可 被指定為目標(biāo)。
[0046] 圖2中圖示的過程200是示例性實施方式。在其它實施方式中,這樣的過程可包 括另外的塊和步驟。例如,在一些實施方式中,過程200可包括另外的塊,在其中包括或識 別輸入事件以及相關(guān)聯(lián)圖像的自動化動作被定義。另外,塊210和220可針對一組輸入事 件中的每個輸入事件而被重復(fù)。另外,在一些實施方式中,輸入事件可在不與圖像相關(guān)聯(lián)的 情況下被檢測。例如,一些輸入事件,例如來自鍵盤的輸入的輸入事件(例如,鍵盤敲擊) 被應(yīng)用于具有或者作為⑶I的當(dāng)前輸入焦點的⑶I的一部分或⑶I元素,并且重放這樣的 輸入事件的基于圖像的應(yīng)用自動化系統(tǒng)從而不需要識別GUI的該部分或該GUI元素來重放 這樣的輸入事件。
[0047] 圖3A、3B和3C是根據(jù)一種實施方式的具有分別處于第一狀態(tài)、第二狀態(tài)、第三狀 態(tài)的圖形用戶界面元素的圖形用戶界面的一部分。窗口 310是⑶I元素,包括按鍵(GW元 素)315和316。盡管GUI元素在圖3A、3B和3C圖示的示例中是按鍵,但是其它GUI元素 在其它實施方式中可被使用。光標(biāo)320是例如鼠標(biāo)指針的光標(biāo),用戶通過光標(biāo)能夠與窗口 310、按鍵315和/或按鍵316交互。
[0048] 按鍵315具有多種狀態(tài),包括圖3A所示的第一狀態(tài)、圖3B所示的第二狀態(tài)、和圖 3C所示的第三狀態(tài)。按鍵315的狀態(tài)是按鍵315的不同視覺外觀,并且被用于(例如,向 用戶)提供按鍵315的當(dāng)前狀態(tài)的指示。在圖3A、3B和3C圖示的示例中,當(dāng)光標(biāo)320沒有 與按鍵315交互時(圖3A),按鍵315處于第一狀態(tài),當(dāng)光標(biāo)320懸停在或位于按鍵315時 (圖3B),按鍵315處于第二狀態(tài),以及鼠標(biāo)按鍵按下事件發(fā)生并且光標(biāo)320懸停在按鍵315 時(圖3C)是處于第三狀態(tài)。
[0049] 如上所述,因為與哪些自動化動作將被重放(或者在那些自動化動作中指定的輸 入事件被指定)相關(guān)的應(yīng)用的GUI元素的狀態(tài)(或視覺表示)可以在該應(yīng)用執(zhí)行期間改 變,基于圖像的應(yīng)用自動化系統(tǒng)將不能識別其處應(yīng)重放自動化動作的該應(yīng)用的一部分(使 用GUI輸出),這是因為在該自動化動作中指定的圖像包括處于一種狀態(tài)的該應(yīng)用的該部 分,但是該應(yīng)用的該部分當(dāng)前(即,當(dāng)該自動化動作應(yīng)當(dāng)被重放時)處于不同的狀態(tài)。
[0050] 根據(jù)在此討論的各實施方式的基于圖像的應(yīng)用自動化系統(tǒng)在記錄階段期間能夠 生成GUI (或其部分)的多個圖像。例如,這樣的基于圖像的應(yīng)用自動化系統(tǒng)能夠通過周期 性捕捉包括窗口 310的應(yīng)用的快照或者通過響應(yīng)于諸如移動輸入事件之類的輸入事件而 捕捉快照來生成窗口 310的一組圖像(其包括處于第一狀態(tài)的按鍵315的至少一個圖像, 以及處于第二狀態(tài)的按鍵315的至少一個圖像)。另外,基于圖像的應(yīng)用自動化系統(tǒng)能夠當(dāng) 鼠標(biāo)按下事件發(fā)生在按鍵315時(例如,光標(biāo)320懸停在按鍵315處)檢測輸入事件,并且 響應(yīng)于該輸入事件而生成包括處于第三狀態(tài)的按鍵315的圖像。
[0051] 另外,響應(yīng)于輸入事件,基于圖像的應(yīng)用自動化系統(tǒng)能夠裁減來自那些圍繞輸入 事件位置的圖像中的圖像(例如,每個圖像,或圖像的子集,例如包括每隔一個的圖像或每 第η個圖像)。例如,來自托管該應(yīng)用的計算設(shè)備的操作系統(tǒng)的通知能夠向基于圖像的應(yīng)用 自動化系統(tǒng)提供包括該輸入事件的坐標(biāo)的通知?;趫D像的應(yīng)用自動化系統(tǒng)然后能夠裁減 圖像來生成與輸入事件相關(guān)的⑶I元素的第二組圖像,并且能將第二組圖像與輸入事件相 關(guān)聯(lián)(例如,在自動化動作中)。
[0052] 圖4Α、4Β和4C是根據(jù)一種實施方式的分別包括處于圖3Α、3Β和3C圖示的狀態(tài)的 按鍵315的圖像的圖示。換言之,圖4Α、4Β和4C圖示了如上所述的與輸入事件關(guān)聯(lián)的第 二組圖像。圖像410包括處于第一狀態(tài)的按鍵315以及窗口 310的一部分。類似地,圖像 420包括處于第二狀態(tài)的按鍵315以及窗口 310的一部分,并且圖像430包括處于第三狀 態(tài)的按鍵315以及窗口 310的一部分。在圖4Α、4Β和4C圖示的示例中,當(dāng)輸入事件被檢測 (例如,在被托管該應(yīng)用的計算設(shè)備的操作系統(tǒng)識別為輸入事件位置的位置處)時每個圖 像410、420及430的中心大體上或基本上位于光標(biāo)320的位置。
[0053] 圖5是根據(jù)一種實施方式的自動化動作的圖示。如上所述,自動化動作表示將在 重放階段期間被重放的輸入事件。作為示例,自動化動作可被表示為或存儲為腳本文件、擴 展標(biāo)記語言(XML)文檔中的XML元素或XML元素組、或可被基于圖像的應(yīng)用自動化系統(tǒng)訪 問的存儲器中的數(shù)據(jù)結(jié)構(gòu)的一部分。
[0054] 自動化動作500包括上述與圖34、38、3(:、4八、48和4(:相關(guān)的圖像410、420和430。 在一些實施方式中,自動化動作包括對圖像410、420和430的引用(例如,圖像410、420和 430的URI或文件系統(tǒng)路徑)而不是圖像本身。例如,圖像410、420和430可被存儲在數(shù) 據(jù)庫或其它數(shù)據(jù)存儲裝置中,并且自動化動作可被表示為XML文檔。因此,基于圖像的應(yīng)用 自動化系統(tǒng)可以解釋XML文檔,并且使用被包括在自動化動作500中的對圖像410、420和 430的引用,來訪問數(shù)據(jù)庫中的圖像410、420和430。
[0055] 輸入事件標(biāo)識符520標(biāo)識與自動化動作500關(guān)聯(lián)的輸入事件。換言之,輸入事件 標(biāo)識符520標(biāo)識與圖像410、420和430關(guān)聯(lián)的輸入事件。輸入事件標(biāo)識符520可以是例如 從其它輸入事件中唯一地標(biāo)識一輸入事件的標(biāo)識符。更具體地,例如,唯一標(biāo)識符可以關(guān)聯(lián) 到或被分配到輸入事件的每一類型或分類,并且與自動化動作500關(guān)聯(lián)的輸入事件的類型 的唯一標(biāo)識符被作為輸入事件標(biāo)識符520而使用。
[0056] 除了圖像(或?qū)D像的引用),自動化動作500還包括目標(biāo)標(biāo)識符530。目標(biāo)標(biāo)識 符530是與自動化動作500關(guān)聯(lián)的輸入事件的目標(biāo)的標(biāo)識符或?qū)υ撃繕?biāo)的引用(或者對被 指定為目標(biāo)的圖像的引用)。如圖5所示,目標(biāo)標(biāo)識符530引用或標(biāo)識圖像430。在一些實 施方式中,基于圖像的應(yīng)用自動化系統(tǒng)可以修改或更新目標(biāo)標(biāo)識符530來引用或標(biāo)識例如 圖像420或410的另一圖像。
[0057] 圖6是根據(jù)一種實施方式的將圖像指定為輸入事件的目標(biāo)的過程的流程圖?;?圖像的應(yīng)用自動化系統(tǒng)實施過程600在塊610處識別被指定為輸入事件的目標(biāo)的圖像。例 如,基于圖像的應(yīng)用自動化系統(tǒng)能夠訪問存儲在存儲器的自動化動作中的目標(biāo)標(biāo)識符,以 及訪問該目標(biāo)標(biāo)識符所引用的圖像。在其它實施方式中,基于圖像的應(yīng)用自動化系統(tǒng)能夠 訪問與存儲在存儲器中所存儲的自動化動作中(或被其引用)的圖像相關(guān)聯(lián)的元數(shù)據(jù)來確 定哪個圖像被指定為輸入事件的目標(biāo)。換言之,與圖像相關(guān)聯(lián)的元數(shù)據(jù)可以包括將該圖像 指定作為輸入事件目標(biāo)的信息。
[0058] 基于圖像的應(yīng)用自動化系統(tǒng)然后在塊620確定該圖像是否滿足⑶I的一部分。例 如,使用傳統(tǒng)的基于圖像的應(yīng)用自動化系統(tǒng)中的圖像分析技術(shù)或方法,基于圖像的應(yīng)用自 動化系統(tǒng)實施過程600能夠確定該圖像是否滿足GUI的任何部分。作為特定例子,使用圖 像分析技術(shù)或方法,例如上述與圖1的塊110中相關(guān)的那些,基于圖像的應(yīng)用自動化系統(tǒng)能 夠訪問GUI的圖像或其它表示,并且將在塊610處被識別的圖像與GUI的該圖像或表示相 比較。
[0059] 如果⑶I的一部分被該圖像滿足,在塊650處,在⑶I的該部分處執(zhí)行輸入事件。 例如,在包括目標(biāo)標(biāo)識符的自動化動作中,由輸入事件標(biāo)識符所標(biāo)識或描述的輸入事件被 用于在塊610處識別該圖像。
[0060] 如果在塊610處識別的圖像沒有在塊620處滿足⑶I的任何部分,則在塊630處 選擇另一圖像。即,過程600可被基于圖像的應(yīng)用自動化系統(tǒng)相對于包括目標(biāo)標(biāo)識符、輸入 事件標(biāo)識符、以及一組圖像(或?qū)D像的引用)的自動化動作來執(zhí)行。來自這些圖像的第 一圖像可以被識別為由輸入事件標(biāo)識符所標(biāo)識的輸入事件的目標(biāo),并且在塊630處可從這 些圖像中選擇另一圖像。
[0061] 根據(jù)多種方法中的任何一種,在塊630處該圖像可被選擇。例如,如上所述,該圖 像可基于圖像之中的優(yōu)先級;基于規(guī)則、參數(shù)或偏好;或使用其它方法來選擇。作為特定例 子,可根據(jù)與這些圖像中的每一個相關(guān)的時間戳來從這些圖像中選擇圖像。
[0062] 如上所述,在一些實施方式中,在塊630處被選擇的圖像獨立于用戶輸入。換言 之,基于圖像的應(yīng)用自動化系統(tǒng)可以在塊630處選擇圖像,而不需要來自用戶的做出選擇 的指示。
[0063] 在圖像在塊630處被選擇之后,該圖像在塊640處被指定為輸入事件的目標(biāo)。例 如,表示輸入事件并且包含在610處被識別的圖像和在塊630處被選擇的圖像的自動化動 作的目標(biāo)標(biāo)識符可被修改或更新來引用在塊630處被選擇的圖像。換言之,該目標(biāo)標(biāo)識符 可被更新來將在塊630處選擇的圖像指定作為輸入事件的目標(biāo)。在其它實施方式中,涉及 與輸入事件相關(guān)聯(lián)的圖像的元數(shù)據(jù)可被修改來將在塊630處選擇的圖像指定作為輸入事 件的目標(biāo)。過程600然后繼續(xù)到塊620來確定在塊630處選擇的圖像是否滿足⑶I的任何 部分。
[0064] 如圖6所示,塊620、630和640可針對與輸入事件相關(guān)聯(lián)的一組圖像(例如,包括 在自動化動作中或由自動化動作引用的一組圖像)而被重復(fù)。如果沒有來自該組圖像的圖 像滿足⑶I的任何部分,過程600可以完成。在一些實施方式中,基于圖像的應(yīng)用自動化系 統(tǒng)實施過程600可以向用戶提供失敗或錯誤通知(例如,在顯示器上、通過電子郵件消息、 通過短消息服務(wù)(SMS)消息、通過即時消息、或通過某其它方法)。
[0065] 圖6示出的過程600是示例性實施方式。在其它實施方式中,另外的、更少的或重 布置的塊或步驟都可包括在過程600中。例如,塊640可被移動到塊650之后或之前。換 言之,在基于圖像的應(yīng)用自動化系統(tǒng)已經(jīng)確定該圖像滿足了 GUI的一部分后,該圖像可被 指定為輸入事件的目標(biāo)。
[0066] 另外,在一些實施方式中,自動化動作在過程600的單獨執(zhí)行或調(diào)用中,可被多次 操縱或處理。例如,在應(yīng)用的首次自動化測試期間,包含與輸入事件相關(guān)的圖像的自動化動 作可在過程600的一次調(diào)用期間被處理。在該自動化測試期間,該自動化動作的目標(biāo)標(biāo)識 符可如上所述的那樣被修改,例如,因為應(yīng)針對其執(zhí)行輸入事件的GUI元素處于與由被指 定為目標(biāo)的圖像所表示的該GUI元素的狀態(tài)不同的狀態(tài)。在應(yīng)用的第二次另外的自動化測 試期間,該自動化動作然后在過程600的后續(xù)調(diào)用中可被再次處理。在該另外的自動化測 試期間,該自動化動作的目標(biāo)標(biāo)識符可被再次修改。例如,如果當(dāng)前指定為目標(biāo)的圖像不滿 足GUI的任何部分的話,該目標(biāo)標(biāo)識符可被修改來將不同的圖像指定作為與該自動化動作 相關(guān)聯(lián)的輸入事件的目標(biāo)。在其它實施方式中,如果當(dāng)前指定為目標(biāo)的圖像不滿足GUI的 任何部分,該不同圖像可被用于識別應(yīng)該在其處執(zhí)行輸入事件的GUI的一部分(S卩,該不同 圖像所滿足的GUI的一部分),但該不同圖像不被指定為輸入事件的目標(biāo)。
[0067] 圖7是根據(jù)一種實施方式的基于圖像的應(yīng)用自動化系統(tǒng)的示意框圖。基于圖像的 應(yīng)用自動化系統(tǒng)包括選擇模塊710、分析模塊720、事件模塊730以及重放模塊740。盡管 關(guān)于圖7和8以及其它示例實施方式闡釋并討論了多種模塊(即,軟件及硬件的組合),但 這些模塊的其它組合或子組合可被包括在其它實施方式中。換言之,盡管圖7和8闡釋的 以及在其它示例實施方式中討論的這些模塊在此處討論的示例中執(zhí)行特定功能,但是這些 以及其它功能可以以不同的模塊或模塊組合來完成、實施或?qū)崿F(xiàn)。例如,圖示或/或討論為 分離模塊的兩個或更多的模塊可被組合一個模塊,該模塊執(zhí)行關(guān)于該兩個模塊所討論的功 能。作為另一個例子,關(guān)于這些示例所討論的在一個模塊上執(zhí)行的的功能可在一個或多個 不同模塊上執(zhí)行。
[0068] 選擇模塊710訪問來自與輸入事件相關(guān)聯(lián)的一組圖像中的一個或多個圖像。例 如,選擇模塊710可以基于在自動化動作中指定的目標(biāo)標(biāo)識符來選擇被指定為輸入事件的 目標(biāo)的圖像。再如,選擇模塊710可以響應(yīng)于確定來自該組圖像的第一圖像不滿足⑶I的 任何部分(例如,通過分析模塊720)而從該組圖像中選擇第二圖像。選擇模塊710能訪問 與圖像之中的優(yōu)先級和/或用于在圖像之中選擇圖像的規(guī)則、參數(shù)或偏好相關(guān)的信息。另 夕卜,如上所述,上述選擇模塊710能夠獨立于用戶輸入而選擇圖像。即,例如,選擇模塊710 能夠響應(yīng)于來自分析模塊720的信號而選擇圖像,而不是響應(yīng)于用戶輸入。
[0069] 分析模塊720訪問⑶I的圖像或其它表示并確定圖像(例如,在選擇模塊710選 擇或識別的圖像)是否滿足該GUI的任何部分。例如,分析模塊720能使用多種圖像分析 技術(shù)或方法中的任何一種(例如在傳統(tǒng)的基于圖像的應(yīng)用自動化系統(tǒng)中使用的那些)來確 定圖像是否滿足GUI的任何部分。
[0070] 另外,分析模塊720與選擇模塊710通信(例如,交換數(shù)據(jù)或表示數(shù)據(jù)的信號)以 接收來自選擇模塊710的圖像(或?qū)D像的引用),并且向選擇模塊710提供信號或命令來 從與輸入事件相關(guān)的一組圖像中選擇另外的(例如,第二、第三、第四等)圖像。另外,分析 模塊720能夠指定在塊710處選擇的圖像作為輸入事件的目標(biāo)。例如,分析模塊720能夠 指定圖像作為輸入事件的目標(biāo),如果該圖像滿足GUI并且當(dāng)前指定為輸入事件的目標(biāo)的圖 像并不滿足該⑶I。
[0071] 事件模塊730在與該輸入事件相關(guān)聯(lián)的圖像所滿足的⑶I的一部分處執(zhí)行輸入事 件。換言之,事件模塊730生成或請求該輸入事件向GUI提供該輸入事件。作為例子,事 件模塊730能請求對輸入事件的模擬或觸發(fā),例如鼠標(biāo)按鍵點擊事件、鍵按下事件、手勢事 件或在托管其處實施該GUI的應(yīng)用的操作系統(tǒng)處的某其它輸入事件。作為另一個例子,事 件模塊730可以在例如Microsoft Remote Desktop Connection?(RDC)或虛擬網(wǎng)絡(luò)計算 (VNC)的桌面共享系統(tǒng)或應(yīng)用中,通過向桌面共享系統(tǒng)(例如,向桌面共享系統(tǒng)的服務(wù)器應(yīng) 用)發(fā)送命令或指令來觸發(fā)輸入事件。作為再一個例子,事件模塊730可以向用于操作系 統(tǒng)或其處實施該GUI的應(yīng)用的輸入事件隊列中注入表示輸入事件的命令、信號或數(shù)據(jù)集。
[0072] 如圖7所示,在一些實施方式中,基于圖像的應(yīng)用自動化系統(tǒng)包括重放模塊740。 重放模塊訪問自動化動作,并且向選擇模塊710、分析模塊720和事件模塊730提供來自這 些自動化動作的數(shù)據(jù)或信息。換言之,重放模塊740能夠調(diào)整基于圖像的應(yīng)用自動化系統(tǒng) 700的重放階段。
[0073] 作為特定例子,基于圖像的應(yīng)用自動化系統(tǒng)700可以重放腳本文件來使定義GUI 的應(yīng)用的測試自動化。重放模塊740能夠訪問包含一組自動化動作的腳本文件,并且向選 擇模塊710、分析模塊720和事件模塊730提供來自這些自動化動作的信息以執(zhí)行該自動化 測試。作為特定例子,重放模塊740能夠順序地訪問腳本文件中的自動化動作,并且向選擇 模塊710及分析模塊720提供目標(biāo)標(biāo)識符和圖像(或?qū)D像的引用)。另外,重放模塊740 能夠向事件模塊730提供輸入事件標(biāo)識符,并且事件模塊730能夠執(zhí)行由這些輸入事件標(biāo) 識符所標(biāo)識的輸入事件。
[0074] 圖8是根據(jù)一種實施方式的托管基于圖像的應(yīng)用自動化系統(tǒng)的計算設(shè)備的示意 框圖。在圖8的示例中,計算設(shè)備800包括處理器810、通信接口 820和存儲器830,并且托 管操作系統(tǒng)831、選擇模塊710、分析模塊720、事件模塊730和應(yīng)用835。
[0075] 處理器810是執(zhí)行或解釋指令、代碼或信號的硬件及軟件的任意組合。例如,處理 器810可以是微處理器、專用集成電路(ASIC)、例如處理器或計算裝置集群或網(wǎng)絡(luò)的分布 式處理器、多核或多處理器式處理器、或虛擬機的虛擬或邏輯處理器。
[0076] 通信接口 820是一模塊,通過它處理器810能夠通過通信鏈路與其它處理器或計 算設(shè)備進(jìn)行通信。例如,通信接口 820可包括網(wǎng)絡(luò)接口卡和在處理器810處托管的通信協(xié) 議堆棧(例如,存儲在存儲器830并在處理器810執(zhí)行和解釋來實現(xiàn)網(wǎng)絡(luò)協(xié)議的指令或代 碼)。作為特定示例,通信接口 820可以是有線接口、無線接口、以太網(wǎng)接口、光纖通道接口、 無限帶寬接口、以及IEEE802. 11接口,或某其它通信接口,通過它們處理器810能夠交換表 示數(shù)據(jù)的信號或符號以與其它處理器或計算設(shè)備進(jìn)行通信。
[0077] 存儲器830是存儲指令、代碼、數(shù)據(jù)或其它信息的處理器可讀介質(zhì)。如此處所使 用的,處理器可讀介質(zhì)是存儲指令、代碼、數(shù)據(jù)或其它非暫時性信息的任何介質(zhì),并且可以 直接或間接地被處理器訪問。換言之,處理器可讀介質(zhì)是非暫時性介質(zhì),處理器可在其中 訪問指令、代碼、數(shù)據(jù)或其它信息。例如,存儲器830可以是易失性隨機訪問存儲器(RAM)、 例如硬盤驅(qū)動或固態(tài)驅(qū)動的永久數(shù)據(jù)存儲器、壓縮盤(CD),數(shù)字視頻盤(DVD)、Secure Digital?(SD)、多媒體卡(MMC)、CompactFla ShTM(CF)或其組合,或其它存儲器。換言之,存 儲器830可被表示為多種處理器可讀介質(zhì)。在一些實施方式中,存儲器830可以與處理器 810集成,與處理器810分離,或位于計算設(shè)備800的外部。
[0078] 存儲器830包括當(dāng)在處理器810中執(zhí)行時實現(xiàn)操作系統(tǒng)831、操作系統(tǒng)831、選擇 模塊710、分析模塊720、事件模塊730和應(yīng)用835的指令或代碼。換言之,操作系統(tǒng)831, 包括選擇模塊710、分析模塊720和事件模塊730的基于圖像的應(yīng)用自動化系統(tǒng)、以及應(yīng)用 835都托管在計算設(shè)備800處。
[0079] 在圖8所圖示的示例中,應(yīng)用835是包括選擇模塊710、分析模塊720和事件模塊 730的基于圖像的應(yīng)用自動化系統(tǒng)能夠重放自動化動作來實現(xiàn)程序的自動化的應(yīng)用。在其 它實施方式中,應(yīng)用835被托管在不同計算設(shè)備中,并且包括選擇模塊710、分析模塊720和 事件模塊730的基于圖像的應(yīng)用自動化系統(tǒng),通過通信鏈路,使用例如通信接口 820和桌面 共享系統(tǒng),能夠在該應(yīng)用中重放表示輸入事件的自動化動作來實現(xiàn)某一程序的自動化。
[0080] 在一些實施方式中,計算設(shè)備800可以是虛擬化的計算設(shè)備。例如,計算設(shè)備800 可作為計算服務(wù)器處的虛擬機來托管。另外,在一些實施方式中,計算設(shè)備800可以是虛擬 化計算裝置,并且操作系統(tǒng)831是最小的或剛夠用的操作系統(tǒng)以支持(例如,提供諸如通信 協(xié)議棧之類的服務(wù)以及對計算設(shè)備800的諸如通信接口 820之類的部件的訪問)選擇模塊 710、分析模塊720、事件模塊730和應(yīng)用835。
[0081] 從多種存儲器或處理器可讀介質(zhì)上,選擇模塊710、分析模塊720和事件模塊730 能夠被計算設(shè)備800訪問或安裝。例如,計算設(shè)備800能夠通過通信接口 820在遠(yuǎn)程處理 器可讀介質(zhì)處訪問事件選擇模塊710、分析模塊720和事件模塊730。作為特定示例,計算 設(shè)備800可以是瘦客戶端,在啟動序列期間,其訪問操作系統(tǒng)831、選擇模塊710、分析模塊 720、事件模塊730和應(yīng)用835。
[0082] 作為另一例子,計算設(shè)備800可包括(圖8未示出)處理器可讀介質(zhì)訪問設(shè)備(例 如,⑶、DVD、SD、MMC或CF驅(qū)動器或讀取器),并且可通過該處理器可讀介質(zhì)訪問設(shè)備在處理 器可讀介質(zhì)上訪問選擇模塊710、分析模塊720和事件模塊730。作為更具體的示例,該處 理器可讀介質(zhì)訪問設(shè)備可以是DVD驅(qū)動器,在其中可訪問包括選擇模塊710、分析模塊720 和事件模塊730中的一個或多個的安裝包的DVD。該安裝包能夠在處理器810被執(zhí)行或解 釋來在計算設(shè)備800中(例如,在存儲器800中)安裝選擇模塊710、分析模塊720和事件 模塊730中的一個或多個。計算設(shè)備800然后能夠托管或執(zhí)行選擇模塊710、分析模塊720 和事件模塊730。
[0083] 在一些實施方式中,選擇模塊710、分析模塊720和事件模塊730可從多個源、位 置或資源中訪問或安裝。例如,選擇模塊710、分析模塊720和事件模塊730的一些部件可 通過通信鏈路而被安裝,并且選擇模塊710、分析模塊720和事件模塊730的其它部件可從 DVD安裝。
[0084] 在其它實施方式中,選擇模塊710、分析模塊720和事件模塊730可分布于多個計 算設(shè)備中。即,選擇模塊710、分析模塊720和事件模塊730的一些部件可被托管在一個計 算設(shè)備,而選擇模塊710、分析模塊720和事件模塊730的其它部件可被托管在另一計算設(shè) 備。作為特定示例,選擇模塊710、分析模塊720和事件模塊730可被托管在一計算設(shè)備集 群中,其中選擇模塊710、分析模塊720和事件模塊730中的每一個都被托管在多個計算設(shè) 備,并且沒有單個計算設(shè)備托管選擇模塊710、分析模塊720和事件模塊730中的每一個。
[0085] 盡管特定實施方式在上文中被示出和描述,但可做出多種形式和細(xì)節(jié)的變化。例 如,關(guān)于一種實施方式和/或過程所描述的一些特征能被關(guān)聯(lián)到其它實施方式。換言之,關(guān) 于一種實施方式所描述的過程、特征、部件和/或?qū)傩栽谄渌鼘嵤┓绞街幸彩怯杏玫?。?為再一例子,以上關(guān)于特定模塊或元件所描述的功能可被包括在其它實施方式的不同的模 塊、引擎或元件中。進(jìn)一步地,應(yīng)當(dāng)理解,此處描述的系統(tǒng),設(shè)備和方法可包括所描述的不同 實施方式的部件和/或特征的多種組合和/或子組合。因此,參照一個或多個實施方式而 描述的特征能與此處描述的其它實施方式組合。
[0086] 如此處所使用的,術(shù)語"模塊"是指硬件(例如,如集成電路或其它電路的處理器) 和軟件(例如,機器或處理器可執(zhí)行的指令、命令或代碼,如固件、編程或目標(biāo)代碼)的組 合。硬件和軟件的組合可包括僅硬件(即,沒有軟件元件的硬件元件)、托管在硬件上的軟 件(例如,存儲在存儲器中并且在處理器執(zhí)行或解釋的軟件)、或硬件和托管在硬件上的軟 件。
[0087] 另外,如此處所使用的,單數(shù)形式的"一個","一"和"該"包括復(fù)數(shù)個指代物,除非 上下文明確指明要排除。因此,作為示例,術(shù)語"模塊"旨在表達(dá)的意思是一個或多個模塊, 或模塊的組合。進(jìn)而,此處使用的術(shù)語"提供"包括推送機制(例如,通過通信路徑或通道 向掃描儀發(fā)送接口描述),拉取機制(例如,響應(yīng)于來自掃描儀的請求而向掃描儀傳送接口 描述),以及存儲機制(例如,在其處掃描儀可訪問接口描述的數(shù)據(jù)庫或服務(wù)中存儲該接口 描述)。進(jìn)一步地,如此處所使用的,術(shù)語"基于"包括至少部分基于。因此,被描述為基于 一些原因的特征可僅僅基于該原因或基于該原因及一個或多個其它原因。
【權(quán)利要求】
1. 一種處理器可讀介質(zhì),存儲表示指令的代碼,當(dāng)所述指令在處理器被執(zhí)行時使得處 理器: 在第一時間確定,來自與輸入事件相關(guān)聯(lián)的多個圖像中的第一圖像不滿足圖形用戶界 面的任何部分; 獨立于用戶輸入,在第一時間之后的第二時間從所述多個圖像中選擇第二圖像; 識別該第二圖像所滿足的圖形用戶界面的一部分;以及 獨立于用戶輸入,在該圖形用戶界面的該部分處執(zhí)行該輸入事件。
2. 如權(quán)利要求1的處理器可讀介質(zhì),其中該第一圖像在該第一時間被指定作為該輸入 事件的目標(biāo),該處理器可讀介質(zhì)進(jìn)一步包括表示指令的代碼,當(dāng)所述指令在該處理器被執(zhí) 行時使得該處理器: 在該第二時間之后,將該第二圖像指定作為該輸入事件的目標(biāo)。
3. 如權(quán)利要求1的處理器可讀介質(zhì),進(jìn)一步包括表示指令的代碼,當(dāng)所述指令在該處 理器被執(zhí)行時使得該處理器: 在該第一時間之前確定該第一圖像是該輸入事件的目標(biāo)。
4. 如權(quán)利要求1的處理器可讀介質(zhì),其中所述多個圖像、該輸入事件、以及該輸入事件 的目標(biāo)在存儲于該處理器可訪問的存儲器的自動化動作中被標(biāo)識。
5. 如權(quán)利要求1的處理器可讀介質(zhì),其中所述多個圖像、該輸入事件、以及該輸入事件 的目標(biāo)在自動化動作中被標(biāo)識,該處理器可讀介質(zhì)進(jìn)一步包括表示指令的代碼,當(dāng)所述指 令在該處理器被執(zhí)行時使得該處理器: 修改該自動化動作使得該第二圖像為該輸入事件的目標(biāo)。
6. 如權(quán)利要求1的處理器可讀介質(zhì),其中: 該第一圖像包括處于第一狀態(tài)的圖形用戶界面元素;以及 該第二圖像包括處于第二狀態(tài)的該圖形用戶界面元素。
7. -種基于圖像的應(yīng)用自動化系統(tǒng),包括: 選擇模塊,訪問來自與輸入事件相關(guān)聯(lián)的多個圖像中的圖像; 分析模塊,確定該圖像是否滿足圖形用戶界面的一部分;以及 事件模塊,在該圖像滿足該圖形用戶界面的一部分的情況下在圖形用戶界面的該部分 處執(zhí)行該輸入事件。
8. 如權(quán)利要求7的系統(tǒng),其中: 來自所述多個圖像中的該圖像是第一圖像; 該選擇模塊被配置為,獨立于用戶輸入,在該分析模塊確定該第一圖像不滿足該圖形 用戶界面的一部分的情況下,訪問來自所述多個圖像中的第二圖像; 該分析模塊被配置為確定該第二圖像滿足該圖形用戶界面的一部分;并且 該事件模塊被配置為,在該第二圖像所滿足的該圖形用戶界面的該部分處執(zhí)行該輸入 事件。
9. 如權(quán)利要求7的系統(tǒng),其中: 來自所述多個圖像中的該圖像是第一圖像; 該選擇模塊響應(yīng)于確定該第一圖像是該輸入事件的目標(biāo)而訪問該第一圖像; 該選擇模塊被配置為,獨立于用戶輸入,在該分析模塊確定該第一圖像不滿足該圖形 用戶界面的一部分的情況下,訪問來自所述多個圖像中的第二圖像; 該分析模塊被配置為確定該第二圖像滿足該圖形用戶界面的一部分;并且 該事件模塊被配置為在該第二圖像所滿足的該圖形用戶界面的該部分處執(zhí)行該輸入 事件。
10. 如權(quán)利要求7的系統(tǒng),其中: 來自所述多個圖像中的該圖像是第一圖像; 該選擇模塊響應(yīng)于確定該第一圖像被指定作為該輸入事件的目標(biāo)而訪問該第一圖 像; 該選擇模塊被配置為,獨立于用戶輸入,在該分析模塊確定該第一圖像不滿足該圖形 用戶界面的一部分的情況下,訪問來自所述多個圖像中的第二圖像并將該第二圖像指定作 為該輸入事件的目標(biāo); 該分析模塊被配置為確定該第二圖像滿足該圖形用戶界面的一部分;并且 該事件模塊被配置為在該第二圖像所滿足的該圖形用戶界面的該部分處執(zhí)行該輸入 事件。
11. 一種處理器可讀介質(zhì),存儲表示指令的代碼,當(dāng)所述指令在處理器被執(zhí)行時使得處 理器: 識別來自與輸入事件相關(guān)聯(lián)的多個圖像中的第一圖像,該第一圖像被指定為該輸入事 件的目標(biāo); 確定該第一圖像不滿足圖形用戶界面的任何部分; 確定來自所述多個圖像中的第二圖像滿足該圖形用戶界面的一部分;以及 獨立于用戶輸入,將該第二圖像指定作為該輸入事件的目標(biāo)。
12. 如權(quán)利要求11的處理器可讀介質(zhì),進(jìn)一步包括表示指令的代碼,當(dāng)所述指令在該 處理器被執(zhí)行時使得該處理器: 獨立于用戶輸入,在該圖形用戶界面的該部分處執(zhí)行該輸入事件。
13. 如權(quán)利要求11的處理器可讀介質(zhì),其中: 該第一圖像包括處于第一狀態(tài)的圖形用戶界面元素;以及 該第二圖像包括處于第二狀態(tài)的該圖形用戶界面元素。
14. 如權(quán)利要求11的處理器可讀介質(zhì),其中所述多個圖像、該輸入事件、以及該輸入事 件的目標(biāo)在存儲于該處理器可訪問的存儲器的自動化動作中被標(biāo)識,該處理器可讀介質(zhì)進(jìn) 一步包括表示指令的代碼,當(dāng)所述指令在該處理器被執(zhí)行時使得該處理器: 修改該自動化動作使得該第二圖像為該輸入事件的目標(biāo)。
15. 如權(quán)利要求11的處理器可讀介質(zhì),進(jìn)一步包括表示指令的代碼,當(dāng)所述指令在該 處理器被執(zhí)行時使得該處理器: 確定該第二圖像不滿足該圖形用戶界面的該部分; 確定來自所述多個圖像中的第三圖像滿足該圖形用戶界面的該部分;并且 獨立于用戶輸入,在該圖形用戶界面的該部分處執(zhí)行該輸入事件。
【文檔編號】G06F9/44GK104160370SQ201280068227
【公開日】2014年11月19日 申請日期:2012年1月26日 優(yōu)先權(quán)日:2012年1月26日
【發(fā)明者】M·蘭茲克倫, D·薩羅尼, Y·利夫尼 申請人:惠普發(fā)展公司,有限責(zé)任合伙企業(yè)