国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于圖像的自動化系統(tǒng)和方法

      文檔序號:6484657閱讀:176來源:國知局
      基于圖像的自動化系統(tǒng)和方法
      【專利摘要】在一種實施方式中,基于圖像的自動化處理包括識別圖形用戶界面的圖形對象和在圖形用戶界面中相對于圖形對象執(zhí)行動作。該識別基于包括圖形對象的圖像。
      【專利說明】基于圖像的自動化系統(tǒng)和方法
      【背景技術】
      [0001]軟件自動化系統(tǒng)不接收與來自用戶的那些任務有關的指令而對軟件應用執(zhí)行動作。傳統(tǒng)的軟件自動化系統(tǒng)依賴記錄和重放樣式。在記錄階段中記錄一系列動作,然后在重放或者自動化階段中關于軟件應用自動地執(zhí)行這些動作。
      [0002]通常,軟件自動化系統(tǒng)依賴對要被自動化的軟件應用的運行時環(huán)境的理解。例如,在記錄階段期間,軟件自動化系統(tǒng)與軟件應用的運行時環(huán)境通信,以接收與軟件應用內(nèi)的動作有關的信息。軟件自動化系統(tǒng)然后將指令發(fā)送到運行時環(huán)境,以在重放或者自動化階段期間執(zhí)行那些動作。
      【專利附圖】

      【附圖說明】
      [0003]圖1是根據(jù)一種實施方式處于記錄階段的基于圖像的自動化系統(tǒng)的圖示。
      [0004]圖2是根據(jù)一種實施方式的處于重放階段的基于圖像的自動化系統(tǒng)的圖示。
      [0005]圖3是根據(jù)一種實施方式的基于圖像的自動化系統(tǒng)的示意性框圖。
      [0006]圖4是根據(jù)一種實施方式的托管基于圖像的自動化系統(tǒng)的計算裝置的示意性框圖。
      [0007]圖5是根據(jù)另一種實施方式的基于圖像的自動化系統(tǒng)的示意性框圖。
      [0008]圖6是根據(jù)一種實施方式的確定與圖形對象相關聯(lián)的動作的方法的流程圖。
      [0009]圖7是根據(jù)一種實施方式的執(zhí)行關于圖形對象的動作的方法的流程圖。
      [0010]圖8是根據(jù)一種實施方式的包括處理器和存儲介質的系統(tǒng)的示意性框圖。
      【具體實施方式】
      [0011]已知的軟件自動化系統(tǒng)(或者自動化系統(tǒng))通常依賴對要被自動化的軟件應用的運行時環(huán)境的理解和/或與要被自動化的軟件應用的運行時環(huán)境的關系(例如Java?運行時環(huán)境或者Microsoft.Net?運行時環(huán)境)。例如,這種自動化系統(tǒng)通過以下來使在軟件應用中或者關于軟件應用的動作執(zhí)行自動化:在記錄階段中與軟件應用的運行時環(huán)境交互(例如通信)來記錄在軟件應用的圖形對象(例如按鈕、滑動塊、圖標、列表或者文字框)處或者關于該圖形對象的動作,然后在重放或者自動化階段中與軟件應用的運行時環(huán)境交互來重放或者執(zhí)行在圖形對象處或者關于該圖形對象的那些動作。在自動化系統(tǒng)的記錄階段期間所記錄的軟件應用和通過自動化系統(tǒng)來執(zhí)行動作的軟件應用可以統(tǒng)稱為自動化軟件應用。
      [0012]作為特定的示例,自動化系統(tǒng)可以接收圖形對象的標識符和在記錄階段期間對來自運行時環(huán)境的圖形對象所執(zhí)行的動作的標識符。自動化系統(tǒng)可以通過在重放階段期間向運行時環(huán)境提供圖形對象的標識符和動作的標識符來重放那個動作。因此,這種自動化系統(tǒng)依靠與運行時環(huán)境的通信和對運行時環(huán)境的理解(例如闡釋來自運行時環(huán)境的標識符的能力)來記錄和重放動作。
      [0013]在本文中討論的實施方式包括基于圖像的軟件自動化系統(tǒng)(或者基于圖像的自動化系統(tǒng)),該軟件自動化系統(tǒng)利用例如軟件應用的圖像(例如,諸如位圖、JPEG格式化圖像或者其它視覺表示的視覺表示)來識別其中發(fā)生動作的圖形對象。例如,在本文中討論的基于圖像的自動化系統(tǒng)記錄在基于自動化軟件應用的圖像所識別的圖形對象或者包括自動化軟件應用的圖形對象(例如,自動化軟件應用在其中被示出或者表示的圖像)中所執(zhí)行的(例如,產(chǎn)生諸如鼠標按下事件、鼠標移動事件等系統(tǒng)事件的)動作。此外,在本文中討論的基于圖像的軟件自動化系統(tǒng)可以訪問動作和圖形對象的說明(例如,在記錄階段期間所生成的動作和圖形對象的說明,在記錄階段和稍后的修改期間所生成的動作和圖形對象的說明或者由系統(tǒng)管理員所生成的動作和圖形對象的說明),并且基于不同的自動化軟件應用的圖像在那些圖形對象中重放那些動作。
      [0014]因為這種基于圖像的軟件自動化系統(tǒng)不依賴對的正在自動化的軟件應用的運行時環(huán)境(例如,在其中執(zhí)行這些軟件應用的運行時環(huán)境)的了解,因此利用這些基于圖像的軟件自動化系統(tǒng)可以使在不同的運行時環(huán)境或者平臺(例如不同的操作系統(tǒng))下的軟件應用自動化。此外,這種基于圖像的自動化系統(tǒng)不需要在每次運行時環(huán)境改變或者新的運行時環(huán)境引入時被修改或者更新。
      [0015]如本文所使用的,單數(shù)形式包括復數(shù)個所指對象,除非上下文另外清楚地指示。因此,例如,術語〃圖像〃意在表示一個或多個圖像或者圖像的組合或者序列。另外,如在本文中使用的,術語〃模塊〃是指硬件(例如,像集成電路或者其它電路之類的處理器)和軟件(例如,機器或者處理器可執(zhí)行指令、命令或者諸如固件、編制程序或者目標代碼的代碼)的組合。硬件和軟件的組合包括單獨的硬件(即,沒有軟件單元的硬件單元)、托管在硬件中的軟件(例如,存儲在存儲器中并且在處理器中執(zhí)行或者解釋的軟件)或者托管在硬件中的硬件和軟件。
      [0016]作為基于圖像的自動化系統(tǒng)的示例,圖1是根據(jù)實施方式的記錄階段中的基于圖像的自動化系統(tǒng)的例示。圖形用戶界面(或者"GUI") 110是托管在計算裝置中并且將被自動化的軟件應用的基于圖像的用戶界面(例如,在基于圖像的自動化系統(tǒng)120的重放階段期間在沒有用戶的情況下對GUI 110的圖形對象執(zhí)行動作)。GUIllO作為包括用戶可對其執(zhí)行動作的各種圖形對象的圖像被顯示給用戶。圖形對象是圖像的部分。例如,圖形對象可以是圖像內(nèi)的圖標。圖標是圖像的部分或者是圖像內(nèi)的表示資源和/或功能的子圖像。作為特定的示例,GUI內(nèi)的控件是表示經(jīng)由GUI可獲得的或者可訪問的資源和/或功能的圖標,是圖形對象。即,⑶I是包括一個或多個圖形對象的圖像。這種控件的示例包括控制按鈕(例如按鈕和單選按鈕)、檢查框、編輯框、列表(例如,滾動列表和下拉列表)、應用訪問控件(例如,表示軟件應用的圖標)、文件訪問控件(例如,表示文件的圖標)以及資源訪問控件(例如,表示諸如通過通信鏈路可訪問的服務的資源的圖標)。
      [0017]具體地說,⑶IllO包括具有三個單選按鈕控件(標記為“選項1”、“選項2”以及“選項3”)的單選按鈕組111、具有三個復選框控件(標記為“選擇1”、“選擇2”以及“選擇3”)的復選框組112、下拉列表控件113 (包括條目“數(shù)值1”、“數(shù)值2”以及“數(shù)值3”)、編輯框控件114以及按鈕控件115和116。在其它實施方式中,⑶IllO可以包括比圖1中例示的控件多或者少的控件。例如,圖形用戶界面110可以除去編輯框控件114并且可以包括表示軟件應用并且使那個軟件應用在托管包括GUIllO的軟件應用的計算裝置中被執(zhí)行的應用訪問控件(例如,圖標)。
      [0018]基于圖像的自動化系統(tǒng)120訪問⑶1110的圖像來確定是否已經(jīng)對⑶1110的圖形對象(或者包括⑶1110的軟件應用)執(zhí)行了動作。例如,每當動作(例如,像鼠標光標移動、鼠標單擊發(fā)生或者諸如鍵按下事件或者鍵釋放事件的鍵盤事件)在GUIllO中發(fā)生,基于圖像的自動化系統(tǒng)120訪問⑶IllO的圖像來確定在⑶IllO的圖形對象中是否發(fā)生動作。作為示例,包括GUIllO的軟件應用托管在其內(nèi)的操作系統(tǒng)可以向基于圖像的自動化系統(tǒng)120提供該動作的通知。替換地,基于圖像的自動化系統(tǒng)120可以接收在托管基于圖像的自動化系統(tǒng)120的計算裝置的操作系統(tǒng)內(nèi)發(fā)生的每個動作,并且基于圖像的自動化系統(tǒng)120可以訪問⑶1110的圖像來確定在⑶1110的圖形對象中是否發(fā)生動作。
      [0019]動作是相對于顯示器或者顯示器中的位置執(zhí)行的一些輸入。例如,可以相對于圖形對象執(zhí)行動作。例如,動作包括鼠標光標的移動、利用鼠標光標的單擊或者雙擊、在圖形對象中、附近或者兩端的單擊并拖動移動、在圖形對象被選擇或具有輸入光標時的鍵盤事件以及高亮度顯示圖形對象。
      [0020]在一些實施方式中,基于圖像的自動化系統(tǒng)120接收該動作的通知、訪問⑶IllO的圖像、識別輸入指示器(例如,像鼠標光標的光標)的位置、識別非常接近于光標的圖形對象以及確定在圖形對象中是否發(fā)生該動作。例如,基于圖像的自動化系統(tǒng)120可以響應于GUIllO的用戶利用鼠標光標(未示出)點擊標記為〃選項2〃的單選按鈕控件來接收GUI 110的圖像?;趫D像的自動化系統(tǒng)120識別該鼠標光標并且識別在該鼠標光標下的標記為〃選項2"的單選按鈕控件?;趫D像的自動化系統(tǒng)120然后將動作描述符輸出到動作記錄130。換句話說,如果該動作在圖形對象中發(fā)生,則基于圖像的自動化系統(tǒng)120將動作描述符輸出到動作記錄130。動作描述符描述動作。例如,動作描述符可以包括動作的描述和相對于其執(zhí)行那個動作的圖形對象的描述。換言之,動作描述符描述動作和在基于圖像的自動化系統(tǒng)120的重放階段期間在其中執(zhí)行那個動作的圖形對象。
      [0021]動作記錄130是存儲動作描述符的文件或者其它數(shù)據(jù)儲存庫。例如,動作記錄130可以是在重放階段期間基于圖像的自動化系統(tǒng)120可訪問的腳本文件。即,動作描述符可以作為腳本文件內(nèi)的指令(即,動作記錄130)被存儲,并且基于圖像的自動化系統(tǒng)120可以訪問那些指令來在重放階段期間對GUIllO執(zhí)行動作。
      [0022]在其它實施方式中,基于圖像的自動化系統(tǒng)120接收該動作的通知、該動作(例如,相對于計算裝置的顯示器)的位置、訪問GUIllO的圖像、識別非常接近于光標的圖形對象以及確定是否在圖形對象中發(fā)生該動作。換句話說,基于圖像的自動化系統(tǒng)120從托管基于圖像的自動化系統(tǒng)120的計算裝置的操作系統(tǒng)接收該動作的位置而不是定位輸入指示器的場所或者位置。作為特定的示例,該動作的通知還可以包括諸如關于輸出裝置的一對笛卡爾或者極坐標的位置標識符,該輸出裝置是諸如輸出或者顯示識別發(fā)生該動作的場所或者位置的⑶IllO的顯示器。替換地,例如,位置標識符可以與⑶IllO有關而非與顯示GUIllO的輸出裝置有關。如果在圖形對象中發(fā)生該動作,則基于圖像的自動化系統(tǒng)120將動作描述符輸出到動作記錄130。
      [0023]圖2是根據(jù)一種實施方式的重放階段中的基于圖像的自動化系統(tǒng)的例示。如圖2所示,基于圖像的自動化系統(tǒng)120訪問或者接收動作描述符130并且響應于或者基于動作描述符130來相對于⑶1110 (或者⑶1110的圖形對象)執(zhí)行動作。
      [0024]更具體地說,如圖2所示,基于圖像的自動化系統(tǒng)120訪問動作描述符并且響應于通過指示器241所示的那個動作描述符來選擇單選按鈕組控件111的標記為"選項2〃的單選按鈕控件。更具體地說,基于圖像的自動化系統(tǒng)120響應于訪問該動作描述符來訪問⑶IllO的圖像,并且基于動作描述符的標記為〃選項2〃(圖形對象)的單選按鈕控件的描述來識別標記為〃選項2"的單選按鈕控件?;趫D像的自動化系統(tǒng)120然后確定標記為〃選項2〃的單選按鈕控件的位置。例如,基于圖像的自動化系統(tǒng)120可以確定標記為〃選項2〃的單選按鈕控件相對于托管GUIllO的計算裝置的顯示器或者幀緩存器或者相對于GUIllO的位置。作為特定的示例,基于圖像的自動化系統(tǒng)120可以將標記為〃選項2〃的單選按鈕控件的位置確定為來自托管GUIllO的計算裝置的顯示器或者幀緩存器,或者GUIllO的右上角、左上角或者其它的基準點的許多水平像素和許多垂直像素。
      [0025]基于圖像的自動化系統(tǒng)120然后在標記為〃選項2〃的單選按鈕控件的位置處執(zhí)行動作。例如,該動作描述符可以包括動作的描述,并且基于圖像的自動化系統(tǒng)120在標記為"選項2"的單選按鈕控件的位置處執(zhí)行那個動作。作為特定的示例,該動作可以是選擇標記為〃選項2"的單選按鈕控件的單擊動作。即,基于圖像的自動化系統(tǒng)120單擊(或者生成或者執(zhí)行單擊動作)標記為〃選項2"的單選按鈕控件。例如,基于圖像的自動化系統(tǒng)120通過經(jīng)由操作系統(tǒng)的應用編程接口(application programming interface, 〃API〃)向托管GUIllO的操作系統(tǒng)提供事件(或者與該事件相關聯(lián)的信息),可以在先前由基于圖像的自動化系統(tǒng)120識別的標記為〃選項2"的單選按鈕控件的位置中觸發(fā)與該單擊動作有關的事件(例如,鼠標鍵按下事件和鼠標鍵釋放事件)。
      [0026]類似地,指示符242、243、244、245、246和247表示其它動作。即,基于圖像的自動化系統(tǒng)120可以訪問動作描述符130并且執(zhí)行由⑶1110中的指示符242、243、244、245、246和247示出的動作。指示符242示出在標記為〃選擇1〃的復選框控件中的單擊動作。類似地,指示符234示出在標記為"選擇3〃中的復選框控件中的單擊動作。指示符244示出在編輯框控件114中的鍵盤動作(例如打字)。即,基于圖像的自動化系統(tǒng)120利用⑶IllO的圖像來識別編輯框控件114并且在編輯框控件114中執(zhí)行一個或多個動作,以在編輯框控件114中輸入文字。
      [0027]指示符245和246分別示出在下拉列表控件113中的單擊動作和在標記為〃數(shù)值1''的選項中的單擊動作。指示符247示出在按鈕115中的單擊動作。另外,動作描述符130可以包括與除了圖2中示出的動作之外的動作相關的動作描述符(例如,包括諸如在圖形物體上方或者兩端移動鼠標光標、利用鼠標光標雙擊圖形對象、在圖形對象中、附近或者兩端單擊和拖曳運動、在圖形對象被選擇或者具有輸入光標時的鍵盤事件以及高亮度顯示圖形對象)。
      [0028]圖3是根據(jù)一種實施方式的基于圖像的自動化系統(tǒng)的示意性框圖。基于圖像的自動化系統(tǒng)300包括結構分析模塊310、語義(semantic)分析模塊320以及時域(temporal)分析模塊330。盡管結構分析模塊310、語義分析模塊320以及時域分析模塊330作為基于圖像的自動化系統(tǒng)300的分離模塊被示出,一個模塊的功能、操作或者特征可以在另一個模塊中執(zhí)行或者包括在另一個模塊中。例如,時域分析模塊330的一些功能、操作或者特征可以在語義分析模塊320中執(zhí)行或者被包括。結構分析模塊310包括諸如處理器或者專用集成電路(application-specific integrated circuit, 〃ASIC〃)的硬件、存儲在存儲器中且在處理器中從存儲器執(zhí)行的軟件或者它們的組合,以利用結構分析來識別圖像內(nèi)的圖形對象。例如,結構分析模塊310接收包括圖形對象的圖像,并且結構分析模塊310基于圖像的諸如邊緣、陰影、形狀和/或其它結構特征之類的結構特征來將該圖像的部分識別為圖形對象。
      [0029]語義分析模塊320包括諸如處理器或者專用集成電路("ASIC")之類的硬件、存儲在存儲器中且在處理器中從存儲器執(zhí)行的軟件或者它們的組合,以利用語義分析來生成與圖像的圖形對象有關的語義信息。例如,語義分析模塊320從描述那個圖像的圖形對象中提取語義信息。作為特定的示例,關于圖形對象的語義信息可以包括在將圖形對象識別為一組圖形對象的部分(例如,圖形對象是包括在單選按鈕內(nèi)的第一單選按鈕)、包括圖形對象的文字、包括在圖形對象中的動作的描述、識別圖形對象的類型或者類別或者包括圖形對象的圖像的語義描述內(nèi)。
      [0030]此外,語義分析模塊320可以從包括圖形對象的多個圖像中生成與那個圖形對象有關的語義信息。例如,語義分析模塊320可以基于第一圖像中的圖形對象的外觀來生成與圖形對象有關的語義信息。語義分析模塊320然后可以基于第二圖像中的圖形對象的外觀來生成與圖形對象有關的附加的、修訂的或者細化的語義信息。作為特定的示例,語義分析模塊320可以基于按鈕沒有被按下的圖像來生成與該按鈕有關的語義信息。例如,該按鈕是特定的顏色。語義分析模塊320然后可以基于按鈕被按下的另一個圖像來細化那個語義信息。例如,該按鈕在按下時是不同的顏色。
      [0031]時域分析模塊330包括諸如處理器或者專用集成電路("ASIC")的硬件、存儲在存儲器中且在處理器中從存儲器執(zhí)行的軟件或者它們的組合,以確定圖形對象中的動作之間的關系。例如,時域分析模塊330可以接收與圖形對象有關的語義描述并且確定語義描述中的兩個或更多個是否與普通圖形對象和/或動作有關。作為特定的示例,動作可以包括兩個或更多個其它動作或者子動作或者以兩個或更多個其它動作或者子動作為基礎,并且時域分析模塊330可以確定多個子動作是否應該被合成為關于圖形對象的動作。換言之,時域分析模塊330確定多個動作是否與圖形對象中的普通動作相關或者是普通動作的部分。
      [0032]作為特定的示例,時域分析模塊330可以響應于圖形對象中的鼠標鍵按下動作來接收第一語義描述并且可以響應于圖形對象中的鼠標鍵釋放動作來接收第二語義描述。時域分析模塊330然后基于例如第一語義描述和第二語義描述的時間接近度來確定第一語義描述和第二語義描述說明單個單擊動作的兩個部分,并且將第一語義描述和第二語義描述合成為第三語義描述。第三語義描述包括單擊動作的描述而不是鼠標鍵按下動作和鼠標鍵釋放動作的描述。
      [0033]另外,時域分析模塊330可以將更多或者不同的語義描述合成為說明單個動作的語義描述。例如,時域分析模塊330可以將鼠標鍵按下動作的語義描述、鼠標移動動作的語義描述以及鼠標鍵釋放動作的語義描述合成為相對于圖形對象的單擊并拖動動作的語義描述。替換地,例如,時域分析模塊330可以確定響應于在圖形對象中的鼠標鍵按下動作所接收的第一語義描述是完整的或者分離的動作,并且可以基于第一語義描述來輸出動作描述符。作為特定的示例,如果在預定或者預選的時間段內(nèi)沒有接收到其它與圖形對象有關或者關聯(lián)的語義描述,則時域分析模塊330可以確定響應于在圖形對象中的鼠標鍵按下動作所接收的第一語義描述是完整的或者分離的動作。
      [0034]圖4是根據(jù)一種實施方式的托管基于圖像的自動化系統(tǒng)的計算裝置的示意性框圖。如圖4所示,基于圖像的自動化系統(tǒng)433被托管(即,實施為在計算裝置400中執(zhí)行時使計算裝置400或者處理器410執(zhí)行例如在本文中討論的基于圖像的自動化系統(tǒng)的處理或者功能)在計算裝置400中。因此,計算裝置400在托管基于圖像的自動化系統(tǒng)433時可以被稱為基于圖像的自動化系統(tǒng)。
      [0035]如圖4所示,計算裝置400包括通信接口模塊420、處理器410、存儲器430以及非易失性(即非瞬時)處理器可讀介質440。處理器410操作地連接到通信接口模塊420、存儲器430和非易失性處理器可讀介質440。
      [0036]處理器410是多種處理器中的任意處理器。例如,處理器410可以是通用處理器或者專用處理器并且可以作為硬件和/或托管在硬件中的軟件被實施。硬件例如是微處理器、微型控制器、專用集成電路("ASIC")、諸如現(xiàn)場可編程門陣列("FPGA")之類的可編程邏輯器件("PLD")和/或執(zhí)行操作的其它電路。軟件例如是處理器可執(zhí)行指令、命令、代碼、固件、和/或存儲在存儲器中并且在處理器中執(zhí)行(或者托管)的編制程序。軟件可以利用諸如Java?、C++C、匯編語言、硬件描述語言和/或別的合適的程序設計語言來定義。例如,處理器410可以是托管在包括微處理器和存儲器的計算機服務器中的虛擬機。
      [0037]在一些實施方式中,處理器410可以包括多個處理器。例如,處理器410可以是包括多個處理引擎(例如,計算,算法的或者線程核)的微處理器。作為另一個示例,處理器410可以是包括具有共享時鐘、存儲器總線、輸入/輸出總線和/或其它共享資源的多個處理器的計算裝置。此外,處理器410可以是分布式處理器。例如,處理器410可以包括多個計算裝置,每個計算裝置包括處理器,多個計算裝置經(jīng)由諸如計算機網(wǎng)絡的通信鏈路相互通信。
      [0038]存儲器430可以是與處理器410分離的或者可以是外部的并且是處理器可訪問的。通常,如圖4所示,存儲器430包括定義軟件應用的處理器可執(zhí)行指令或者代碼(例如,計算機代碼或者目標代碼),這些軟件應用在計算裝置410的操作期間由處理器410執(zhí)行或者托管在處理器410中。例如,存儲器430可以是包括定義操作系統(tǒng)431、設備驅動程序432、基于圖像的自動化系統(tǒng)433以及軟件應用434的處理器可執(zhí)行指令(即,定義軟件應用的處理器可執(zhí)行指令)的隨機存取存儲器("RAM")。軟件應用434可以包括通過基于圖像的自動化系統(tǒng)433來自動化的一個或多個軟件應用(例如,基于圖像的自動化系統(tǒng)433相對于其執(zhí)行動作)。換句話說,在存儲器430中并且在處理器410中執(zhí)行的操作系統(tǒng)431、設備驅動程序432、基于圖像的自動化系統(tǒng)433以及軟件應用434托管在計算裝置400中(或者在處理器410中)。
      [0039]通常,操作系統(tǒng)431、設備驅動程序432、基于圖像的自動化系統(tǒng)433、軟件應用434和/或數(shù)據(jù)值也存儲在非易失性處理器可讀介質440中。在一些實施方式中,處理器410在初始化或者計算裝置400的啟動序列期間將操作系統(tǒng)431、設備驅動程序432、基于圖像的自動化系統(tǒng)433、軟件應用434和/或數(shù)據(jù)值傳送到或者加載到存儲器430中,并且操作系統(tǒng)431、設備驅動程序432、基于圖像的自動化系統(tǒng)433、軟件應用434和/或數(shù)據(jù)值在計算裝置400的操作期間在存儲器430中被訪問或者從存儲器430執(zhí)行。S卩,非易失性處理器可讀介質440可以作為用于在存儲器430中的計算裝置400的操作期間所存儲的處理器可執(zhí)行代碼或者指令、數(shù)據(jù)值和/或其它信息的持續(xù)或者非瞬態(tài)數(shù)據(jù)存儲器。因此,存儲器430和非易失性處理器可讀介質440可以統(tǒng)稱為計算裝置400的存儲器。
      [0040]處理器可讀介質是可以由處理器訪問的介質。例如,處理器可讀介質是處理器410可以在其中讀取信息(例如處理器可執(zhí)行指令或者數(shù)據(jù)值)的裝置。處理器可讀介質的示例包括但是不限于:諸如硬盤、軟盤和/或磁帶的磁存儲介質;諸如光盤("CD")、數(shù)字視頻盤("DVD")、光盤只讀存儲器(〃⑶-ROM")和/或全息照相裝置的光存儲介質;磁光存儲介質;諸如只讀存儲器("ROM")、可編程序只讀存儲器("PR0M")、可擦除可編程只讀存儲器("EPR0M")、電可擦可編程只讀存儲器("EEPR0M")和/或閃速存儲器的非易失性存儲器以及RAM。換句話說,處理器可讀介質是處理器410可以從其中訪問信息(例如,處理器可執(zhí)行指令或者代碼和/或數(shù)據(jù)值)的裝置。因此,非易失性處理器可讀介質440是處理器可讀存儲器并且存儲器430也是處理器可讀介質。
      [0041]在一些實施方式中,基于圖像的自動化系統(tǒng)433可以從諸如DVD或者⑶之類的處理器可讀介質中被安裝或者加載到計算裝置400中。作為示例,基于圖像的自動化系統(tǒng)433可以包括在DVD中的安裝包(未示出)內(nèi)。該DVD可以插入在計算裝置400中,并且處理器410可以執(zhí)行該安裝包,以在計算裝置400中安裝基于圖像的自動化系統(tǒng)433。替換地,例如基于圖像的自動化系統(tǒng)433可以從包括諸如USB閃速驅動器或者USB硬盤驅動器之類的USB接口的處理器可讀介質、或者經(jīng)由通信鏈路和通信接口模塊420在計算裝置400可訪問的處理器可讀介質中來被安裝或者加載。
      [0042]處理器可執(zhí)行代碼或者指令(例如,計算機代碼或者指令)的示例包括但是不限于諸如步長編譯器所生成的微代碼或者微指令、機器指令以及利用解釋器通過計算機執(zhí)行的包括更高級的指令的文件。例如,實施可以利用Java?、C++、腳本解釋器或者其它面向對象的程序設計語言以及開發(fā)工具來被實現(xiàn)或者實施。處理器可執(zhí)行代碼的附加示例包括但是不限于腳本指令、加密代碼以及壓縮代碼。
      [0043]非易失性處理器可讀介質440例如可以是在包括從諸如DVD或者⑶之類的另一個處理器可讀介質加載或者復制到非易失性處理器可讀介質440的軟件的計算裝置400內(nèi)的硬盤。在一些實施中,非易失性處理器可讀介質440可以在計算裝置400外部或者從計算裝置400可拆卸的。例如,非易失性處理器可讀介質440可以包括通用串行總線?(〃USB〃)接口(或者接口模塊)并且非易失性處理器可讀介質440可以是具有USB接口的閃速存儲裝置。在其它實施中,非易失性處理器可讀介質440可以與處理器410集成。
      [0044]在又一其它實施中,非易失性處理器可讀介質440可以遠離計算裝置400并且計算裝置400可以經(jīng)由通信鏈路(例如計算機網(wǎng)絡)來訪問非易失性處理器可讀介質440。作為特定的示例,非易失性處理器可讀介質440可以是(或者處于)經(jīng)由操作地連接到通信接口模塊420的通信鏈路可訪問的數(shù)據(jù)存儲器或者數(shù)據(jù)存儲服務。計算裝置400可以通過將處理器可執(zhí)行代碼或者指令經(jīng)由通信接口模塊420從非易失性處理器可讀介質440復制到存儲器430并且在處理器410中執(zhí)行處理器可執(zhí)行代碼或者指令來啟動。
      [0045]通信接口模塊420是處理器410可訪問的接口,以經(jīng)由通信鏈路與其它處理器和/或計算裝置通信(即,將表示數(shù)據(jù)的符號發(fā)送到其它處理器和/或計算裝置以及從處理器和/或計算裝置接收這種標記)。在一些實施方式中,基于圖像的自動化系統(tǒng)433經(jīng)由通信接口模塊420輸出與基于圖像的軟件自動化有關的信息。更具體地說,通信接口模塊420可以從處理器410接收數(shù)據(jù)并且經(jīng)由諸如網(wǎng)絡電纜、局域網(wǎng)("LAN")或者因特網(wǎng)之類的通信鏈路發(fā)送表示那些數(shù)據(jù)的符號。例如,通信接口模塊420可以是電話網(wǎng)絡接口、雙扭線網(wǎng)絡接口、同軸網(wǎng)絡接口、光纖網(wǎng)絡接口、諸如無線局域網(wǎng)("WLAN")或者蜂窩網(wǎng)絡之類的無線網(wǎng)絡接口和/或其它的網(wǎng)絡或者通信接口模塊。
      [0046]在一些實施方式中,計算裝置400可以包括附加的模塊或者部件。例如,計算裝置400可以包括向顯示器提供信號來將信息關系輸出到基于圖像的軟件自動化的圖形接口模塊(未示出)。即,計算裝置400可以輸出例如GU1、工作參數(shù)或者統(tǒng)計數(shù)值誤差條件或者與基于圖像的軟件自動化有關的其它信息。
      [0047]圖5是根據(jù)另一種實施方式的基于圖像的自動化系統(tǒng)的示意性框圖。基于圖像的自動化系統(tǒng)500與基于圖像的自動化系統(tǒng)300相似并且包括分別與以上相對于圖3討論的結構分析模塊310、語義分析模塊320以及時域分析模塊330相似的結構分析模塊530、語義分析模塊540以及時域分析模塊550。另外,基于圖像的自動化系統(tǒng)500包括指令解釋器510、圖像獲取模塊520以及動作生成模塊560。此外,結構分析模塊530、語義分析模塊540以及時域分析模塊550的附加的部件或者元件在圖5中被示出。
      [0048]指令解釋器510包括諸如處理器或者專用集成電路("ASIC")之類的硬件、存儲在存儲器中并且來自存儲器處理器中執(zhí)行的軟件或者它們的組合,以確定動作和該動作基于指令應該在其中執(zhí)行的圖形對象。正如以上討論的,指令可以包括或者是基于在記錄階段期間由基于圖像的自動化系統(tǒng)所生成的動作描述符。因此,指令解釋器510可以確定動作和該動作應該基于在基于圖像的自動化系統(tǒng)500中的更早時間所生成的動作描述符來在其中執(zhí)行的圖形對象。
      [0049]另外,指令可以描述與在通過基于圖像的自動化系統(tǒng)所生成的動作描述符中描述的動作或者圖形對象不同的動作或者該動作應該在其中執(zhí)行的圖形對象。換言之,包括通過指令解釋器510來解釋的指令的腳本可以被編輯為改變動作和/或該動作應該在其中執(zhí)行的圖形對象。例如,指令可以編輯為將單擊動作變?yōu)殡p擊動作或者將圖形對象變?yōu)閺瓦x框控件組中的第二復選框控件而不是復選框控件組中的第一復選框控件。此外,指令可以被編輯為改變在編輯框控件中鍵入的文字或者在具有與先前與那個動作有關(例如在共同的動作描述符)內(nèi)的圖形對象的文字的不同文字的圖形對象中執(zhí)行動作。因此,在基于圖像的自動化系統(tǒng)500的重放期間在指令解釋器510中解釋的指令可以與在基于圖像的自動化系統(tǒng)500或者另一個基于圖像的自動化系統(tǒng)的記錄階段期間所生成的利用動作描述符所定義的指令不同。
      [0050]圖像獲取模塊520包括諸如處理器或者專用集成電路("ASIC")之類的硬件、存儲在存儲器中且在處理器處從存儲器執(zhí)行的軟件或者它們的組合,以訪問被自動化(基于圖像的自動化系統(tǒng)500處于記錄階段)或者將被自動化(基于圖像的自動化系統(tǒng)500處于重放階段)的軟件應用的圖像。例如,圖像獲取模塊520可以生成或者訪問軟件應用的GUI在其中輸出的顯示器的屏幕截圖。在一些實施例中,圖像獲取模塊520在基于圖像的自動化系統(tǒng)500的外部。作為示例,圖像獲取模塊520可以是托管基于圖像的自動化系統(tǒng)500或者自動化軟件應用的操作系統(tǒng)的屏幕截圖實用程序或者服務。基于圖像的自動化系統(tǒng)500可以與圖像獲取模塊520通信來訪問自動化軟件應用的圖像(例如,自動化軟件應用的GUI的屏幕截圖)。
      [0051]如圖5所示,結構分析模塊530包括分割引擎531、光學字符識別("OCR")引擎532以及分類引擎533。分割引擎531是將圖像例如經(jīng)由圖像獲取模塊520訪問的圖像)分割為候選的圖形對象的模塊(或者結構分析模塊530的子模塊)。例如,因為諸如GUI中的控件之類的圖形對象被設計為視覺上突出或者與背景對照,分割引擎531可以利用例如候選的圖形對象或者包括候選的圖形對象的圖像的界線、邊界或者其它結構特征來識別圖形對象。作為特定的示例,分割引擎531可以隨時間的圖像(或者圖像的序列)的變化(例如,在輸入光標在上方或者上面、選擇(例如單擊)、拖動、或者另外與圖像的那部分交互時一部分圖像的外觀的變化)、邊緣檢測、分量分析以及其它圖像分析方法來識別候選的圖形對象(例如,圖形的可能是圖形對象的部分)。
      [0052]類似地,OCR引擎532是識別圖像內(nèi)的文字(例如字母或者其它字符)的模塊(或者結構分析模塊530的子模塊)。這個文字提供關于圖像的部分的信息。例如,Gn的按鈕控件常常包括表示那些按鈕控件的功能的文字。因此,結構分析模塊530可以使用關于在OCR引擎532中所生成的圖像中的文字的信息來識別圖形對象。在一些實施中,OCR引擎532向語義分析模塊提供與圖形對象有關的文字,以包括在圖形對象的語義描述中。
      [0053]分類引擎533是將候選的圖形對象分類為各類圖形對象的模塊(或者結構分析模塊530的子模塊)。換句話說,候選的圖形對象被提供給分類引擎533,并且分類引擎533指示候選的圖形對象與圖形對象的什么類型或類別(如果有的話)相關聯(lián)。在候選的圖形對象已經(jīng)被劃分為一類圖形對象后,候選的圖形對象可以被稱為圖形對象。
      [0054]分類引擎533可以使用多種各種分類技術中的任意分類技術。例如,分類引擎533可以在受監(jiān)視的訓練環(huán)境或者無監(jiān)視的訓練環(huán)境中利用圖形對象的訓練組和圖形對象的類別被訓練。另外,分類引擎533可以使用支持矢量機(Support Vector Machine)、Kneans聚類、Mean-Shift聚類或者GrabCut聚類分類技術。此外,分類引擎533可以利用圖形對象的外觀恒定標記來分類圖形對象,以防止外觀的變化(例如,縮放比例變化或者顏色變化)改變圖形對象的分類。這種外觀恒定標記可以是基于諸如隨時間的圖形對象中的變化(或者包括圖形對象的圖像的序列)的圖形對象的梯度、變型、整數(shù)和/或其它分析。
      [0055]語義分析模塊540包括圖像分析引擎541。圖像分析圖像541是分析用于與通過結構分析模塊530識別的圖形對象有關的語義信息的圖像的模塊(或者語義分析模塊540的子模塊)。即,圖像分析引擎541解析或者分析圖像來提取關于圖形對象的描述性信息。例如,圖像分析引擎541可以確定或者識別復選框按鈕控件是復選框按鈕控件組的部分,復選框按鈕控件包括文字(例如,由OCR引擎532提供的文字),或者按鈕控件是處于相對于另一個圖形對象的位置中。正如以上討論的,語義分析模塊540生成包括關于圖形對象和圖形對象處的動作的描述性信息的圖形對象的語義描述。
      [0056]時域分析模塊550包括動作識別模塊551。動作識別模塊551是時間上分析或者關聯(lián)圖形對象的語義描述來確定多個語義描述是否應該被合成為公共的語義描述的模塊(或時域分析模塊的子模塊)。換句話說,動作識別模塊551關聯(lián)語義描述來確定語義描述是否描述在一個或多個圖形對象處的動作的多個部分。如果該語義描述說明了在一個或多個圖形對象中的動作的多個部分,則時域分析模塊550在基于圖像的自動化系統(tǒng)500輸出用于那個動作的動作描述符前合成那些語義描述。如果該語義描述說明不同的動作,則基于圖像的自動化系統(tǒng)500單獨地輸出用于那些動作的動作描述符。
      [0057]動作執(zhí)行模塊560包括諸如處理器或者專用集成電路("ASIC")的硬件、存儲在存儲器中且在處理器中從存儲器執(zhí)行的軟件,或者它們的組合以對圖形對象執(zhí)行動作。例如,動作執(zhí)行模塊560可以將基于在指令解釋器510中所解釋的指令所描述的動作的事件的描述提供給托管基于圖像的自動化系統(tǒng)500或者自動化軟件應用的操作系統(tǒng)的事件或者消息隊列。作為特定的示例,動作執(zhí)行模塊560可以將包括圖形對象的位置和動作的標識符的事件的描述提供給托管自動化軟件應用的操作系統(tǒng)的消息隊列。該操作系統(tǒng)然后在圖形對象的位置中生成該動作。
      [0058]在一些實施方式中,動作執(zhí)行模塊560響應于在指令解釋器510中解釋的單個指令來執(zhí)行多個動作。例如,指令可以指定相對于圖形對象的位置(或者相對于圖形對象)的單擊和拖動動作,并且動作執(zhí)行模塊560可以響應于該單擊和拖動動作來執(zhí)行鼠標鍵按下動作、一個或多個鼠標移動動作以及鼠標鍵釋放動作。換句話說,例如,基于由動作識別弓I擎551所合成的多個動作的合成動作可以由動作執(zhí)行模塊560分解,以執(zhí)行操作系統(tǒng)內(nèi)的合成動作而不是支持該合成動作作為多個簡單或者基本動作。
      [0059]圖6是根據(jù)一種實施方式的確定與圖形對象有關的動作的方法的流程圖。方法600可以作為硬件模塊、作為托管在計算裝置中的軟件模塊和/或作為硬件模塊和軟件模塊的組合來被實施。例如,方法600可以作為專用電路或作為包括存儲在存儲器中并且在與存儲器通信的處理器中執(zhí)行的指令的軟件模塊來被實施。更具體地說,例如,方法600可以在基于圖像的自動化系統(tǒng)中實施并且在記錄階段期間執(zhí)行。
      [0060]在塊610中檢測動作。例如,操作系統(tǒng)可以提供諸如鼠標光標的輸入指示器的移動、鼠標單擊發(fā)生或者諸如鍵按下動作或者鍵釋放動作之類的動作的通知。在一些實施方式中,該通知包括指示參照例如顯示器、圖形或者屏幕緩存器或者GUI的動作的位置的位置標識符。替換地,例如,實施方法600的基于圖像的自動化系統(tǒng)可以通過追蹤或者監(jiān)測從顯示裝置或者圖形緩存器所訪問的圖像中的輸入光標并且基于那些圖像或者圖形對象中的變化確定動作已經(jīng)發(fā)生來檢測動作。例如,如果該輸入光標已經(jīng)移動或者改變兩個或更多個圖像中的外觀,則基于圖像的自動化系統(tǒng)可以確定動作已經(jīng)發(fā)生。作為另一個示例,如果圖形對象的外觀在外表上已經(jīng)改變,則基于圖像的自動化系統(tǒng)可以確定動作已經(jīng)發(fā)生。作為特定的示例,如果按鈕控制變換成按下狀態(tài),則基于圖像的自動化系統(tǒng)可以確定單擊動作已經(jīng)發(fā)生。
      [0061]在檢測該動作后,在塊620中識別圖像(例如,響應于該動作的檢測所獲取的或者訪問的圖像)內(nèi)的圖形對象。在一些實施方式中,整個圖像被解析或者分析來識別圖像內(nèi)的所有圖形對象。在其它實施方式中,一部分圖像被解析或者分析來識別圖像內(nèi)的那部分的圖形對象。例如,可以分析離該動作預先確定或者所選擇的距離內(nèi)的一部分圖像來識別圖形對象。
      [0062]作為示例,可以如塊621-623中所示來識別圖像內(nèi)的圖形對象。在塊621中利用各種圖像分析技術來識別候選的圖形對象。例如,實施方法600的基于圖像的自動化系統(tǒng)可以包括識別候選的圖形對象的分割引擎,該分割引擎基于隨時間的圖形對象(或者包括圖形對象的圖像的序列)中的變化、邊緣檢測、分量分析或者其它圖像分析技術來識別候選的圖形對象。另外,例如,實施方法600的基于圖像的自動化系統(tǒng)可以包括基于文字(例如,候選圖形對象中的字母、詞、數(shù)字或者其它標記)來識別圖形對象的OCR引擎。
      [0063]然后在塊622中對候選圖形對象分類。換句話說,在塊622中做出候選圖形對象是否是圖形對象(例如,如果有的話,候選圖形對象屬于圖形對象的哪種類別)的確定。例如,實施方法600的基于圖像的自動化系統(tǒng)可以包括支持矢量機(Support Vector Machine)、K-means聚類、Mean-Shift聚類或者GrabCut聚類或者其它分類技術的分類引擎。
      [0064]在塊622中對候選圖形對象分類后,方法600進行到塊623,以確定圖像內(nèi)的圖形對象的識別是否完成。即,在塊623中確定是否已經(jīng)識別圖像中的圖形對象。在一些實施方式中,在分析或者解析整個圖像后圖像內(nèi)的圖形對象的識別完成。在其它實施方式中,在分析或者解析相距動作的位置預定或者預選的接近度的一部分圖像后,圖像內(nèi)的圖形對象的識別完成。如果在塊623中圖像內(nèi)的圖形對象的識別完成,則方法600進行到塊630。替換地,如果在塊623中圖像內(nèi)的圖形對象的識別沒有完成,則方法600進行到塊621來識別另一個候選圖形對象。
      [0065]在塊630中然后確定該動作在其中發(fā)生的圖形對象。換言之,在塊630中確定該動作相對于其發(fā)生的圖形對象。例如,從塊620中所識別的圖形對象中選擇定義該動作其中發(fā)生的位置被包括在其中的區(qū)域(例如,圖形對象的邊緣)的區(qū)域的圖形對象。
      [0066]然后在塊640中生成用于該動作在其中發(fā)生的圖形對象的語義信息。換句話說,在塊640中生成與該動作在其中發(fā)生的圖形對象有關的描述性信息。例如,實施方法600的基于圖像的自動化系統(tǒng)的語義分析模塊的圖像分析引擎可以分析接近圖像內(nèi)的圖形對象的位置的一部分圖像來確定該圖形對象是否包括在一組圖形對象內(nèi)或者另一個圖形對象的部分內(nèi)。作為示例,圖形對象可以是混合的圖形對象(例如,包括多個圖形對象的圖形對象)的單元。作為另一個示例,諸如⑶I的單選按鈕控件的圖形對象可以包括在單選按鈕控件組或者群內(nèi),并且在塊640中可以識別該單選按鈕控件組和包括在單選按鈕控件組內(nèi)的其它單選按鈕控件。
      [0067]另外,在塊640中可以從圖像或者圖形對象中提取關于圖形對象的其它信息。例如,可以從圖像中提取圖形對象的圖像(例如,位圖表示)、來自圖形對象的文字、一組圖形對象內(nèi)的圖形對象的標識符或者描述(例如復選框控件組中的第三復選框控件)或其它信息。與在塊640中所生成的與圖形對象有關的信息然后可以存儲在動作描述符中。另外,在塊610中所檢測的該動作的描述和圖形對象的類別的標識符可以包括在動作描述符內(nèi)。
      [0068]在一些實施中,實施方法600的基于圖像的自動化系統(tǒng)可以與另一個軟件自動化系統(tǒng)一起工作。換句話說,軟件應用可以利用基于圖像的自動化系統(tǒng)和例如像依賴于軟件應用的運行時環(huán)境的軟件自動化系統(tǒng)之類的另一個軟件自動化系統(tǒng)來被自動化?;趫D像的自動化系統(tǒng)例如在塊640后可以從另一個軟件自動化系統(tǒng)接收附加的語義信息或者其它信息。另外,基于圖像的自動化系統(tǒng)可以向另一個軟件自動化系統(tǒng)提供語義信息或者其它信息。換句話說,基于圖像的自動化系統(tǒng)可以與另一個軟件自動化系統(tǒng)協(xié)作來使軟件應用自動化。
      [0069]在塊650中確定與(例如,發(fā)生在或者相對于)圖形對象關聯(lián)的動作。換言之,實施方法600的基于圖像的自動化系統(tǒng)確定在該圖形對象中發(fā)生什么動作。例如,在實施方法600的基于圖像的自動化系統(tǒng)中的時域分析模塊的動作識別引擎可以訪問動作描述符,例如具有關于圖形對象和在塊610中所檢測的動作的信息的諸如在塊640中所生成的或者增加的動作描述符。
      [0070]動作識別引擎還可以響應于更早或者在前的動作所生成的其它動作描述符,并且確定響應于其生成動作描述符的每個動作是否與分離或者獨立的動作有關。即,動作識別引擎可以確定促使動作描述(例如,在塊610中所檢測的動作)的生成的動作是否是應該為稍后的重放被存儲(例如,為了在基于圖像的自動化引擎的重放或者自動化階段中使用)的動作,或者是否是復合動作(例如,包括諸如單擊和拖動動作的多個動作的動作)的部分或者單元。
      [0071]如果動作是分離的動作,則在塊660可以存儲包括那個動作和該動作在其中(或者相對于其)發(fā)生的圖形對象的描述的動作描述符。例如,該動作描述符可以作為指令被輸出到自動化腳本(例如文件)。如果該動作不是分離的動作,則可以訪問其它動作描述符來確定那個動作是否是復合動作的單元。例如,相對于共同圖形對象的多個動作可以定義復合動作。如果該動作描述符是復合動作的單元,則包括那個動作的描述的該動作描述符可以被存儲或者緩存在動作識別引擎中。如果該動作描述符是復合動作的最終或者結束單元,則在塊660中可以生成和存儲(例如,作為自動化腳本的指令輸出)包括圖形對象(或者多個圖形對象)和相對于該圖形對象(或者多個圖形對象)發(fā)生動作(或者多個動作)的描述的新的動作描述符(或者一組動作描述符)。
      [0072]在一些實施方式中,塊650可以受時間限制。例如,描述是或者可能是復合動作的單元的動作描述符可以在預定或者預選的時間段被緩存。如果在預定或者預選的時間段沒有完成通過那些動作描述符所描述的動作的復合動作(例如,在動作識別引擎中沒有接收用于那個復合動作的描述結束動作的動作描述),則那些動作描述符作為自動化腳本的指令被輸出。
      [0073]方法600可以包括比圖6中示出的那些更多或更少的塊。另外,可以將方法600的一個或多個塊重新排列。例如,可以為塊620中識別的每個圖形對象生成語義信息并且在語義信息生成后可以確定該動作在其中發(fā)生的圖形對象。換句話說,可以將塊630和640重新排列。作為另一個示例,可以將塊630和640重新排列。更具體地說,例如,實施方法600的基于圖像的自動化系統(tǒng)可以識別導致下拉列表打開的單擊動作。隨后,基于圖像的自動化系統(tǒng)可以識別下拉列表中的項的選擇作為按鈕。例如在塊650中,基于圖像的自動化系統(tǒng)可以確定這個序列不被允許(例如,因為下拉列表沒有包括按鈕)。方法600然后可以返回到例如塊620或者塊640,以將下拉列表中的項重新分類,或者返回到塊640來生成用于下拉列表中的項的不同的語義信息。此外,盡管以上討論關于記錄階段中的基于圖像的自動化系統(tǒng)內(nèi)的示例環(huán)境的方法600,但是方法600在其它環(huán)境內(nèi)也適用。
      [0074]圖7是根據(jù)一種實施方式的執(zhí)行與圖形對象有關的動作的方法的流程圖。方法700可以作為硬件模塊、作為托管在計算裝置中的軟件模塊和/或作為硬件模塊和軟件模塊的組合來被實施。例如,方法700可以作為專用電路或者作為包括存儲在存儲器中并且在與存儲器通信的處理器中執(zhí)行的指令的軟件模塊來被實施。更具體地說,例如,方法700可以在基于圖像的自動化系統(tǒng)中實施并且在重放或者自動化階段期間執(zhí)行。
      [0075]在塊710中訪問描述動作的指令。例如,在塊710中可以訪問在自動化腳本(例如、在處理器可讀介質中的文件)中的指令。該指令包括動作和該動作應該在其中執(zhí)行的圖形對象的描述。在一些實施方式中,可以分別地描述動作和圖形對象。例如,指令可以包括動作的標識符和該動作應該在其中執(zhí)行的圖形對象的描述的參考?;谠搮⒖伎梢栽诓煌奈募蛘邤?shù)據(jù)存儲器(例如數(shù)據(jù)庫)中訪問圖形對象的描述。
      [0076]在塊720中然后在圖像中定位圖形對象。例如,在塊720中可以訪問與自動化軟件應用有關的GUI的圖像。在一些實施方式中,利用與相對于圖中示出的方法600的塊620和640的如上所述的那些類似的圖像分析技術在塊720中定位圖像中的圖形對象。更具體地說,如圖7所示,塊720可以包括在塊721中的圖像的結構分析和在塊722中的圖像的語義分析。
      [0077]作為特定的示例,實施方法700的基于圖像的自動化系統(tǒng)可以包括結構分析模塊,以在塊721中識別圖像內(nèi)的圖形對象。例如,結構分析可以基于圖像的結構特征來識別圖形對象。更具體地說,例如,圖形對象可以基于圖像內(nèi)的邊界、圖像內(nèi)的色差、圖像內(nèi)的梯度、隨時間的圖像的特征的變化的檢測、分量分析或者其它技術來被識別,以識別候選圖形對象。另外,例如,結構分析可以基于文字(例如,候選圖形對象中的字母、詞、數(shù)字或者其它標記)來識別圖形對象。
      [0078]此外,可以通過結構分析來對圖形對象分類。換句話說,結構分析可以包括確定圖形對象屬于那種類別(如果有的話)的圖形對象的。例如,結構分析可以基于支持矢量機、K-means聚類、Mean-Shift聚類、GrabCut聚類、隨時間的圖形對象(或者包括圖形對象的圖像的序列)的變化或者其它分類技術來使用分類引擎。作為特定的示例,圖形對象所屬的圖形對象的類別的標識符可以針對圖像中的每個圖形對象或圖像中的一部分的每個圖形對象來生成。
      [0079]在塊721中所識別的圖形對象可以在塊722中進一步被分析,以從圖像中提取與那些圖形對象有關的語義信息。例如,可以在塊722中的語義分析期間,針對圖形對象生成與包括圖形對象的一組圖形對象有關的信息、圖形圖像的圖像(例如,位圖表示)、來自圖形對象的文字、相對或者絕對的例如關于圖像或者其它圖形對象)的位置信息和/或關于圖形對象的其它描述性信息。
      [0080]另外,在塊721和722中所生成的信息可以在塊720中使用,以識別或者定位通過指令所描述的圖像中的圖形對象。即,在塊720中選擇或者確定在指令中所描述的動作應該在其中執(zhí)行的圖形對象。例如,關于圖像中的圖形對象的在塊721和722中所生成的信息可以與指令中的圖形對象的描述相比較。例如,在指令中所描述的圖形對象的類別的標識符可以與在塊721和722中識別的圖形對象的類別的標識符相比較;在指令中所描述的圖形對象的圖像可以與在塊721和722中識別的圖形對象的圖像相比較;來自指令中所描述的圖形對象的文字可以與來自塊721和722中識別的圖形對象的文字相比較;以及關于指令中所描述的圖形對象的相對位置的信息可以與用于塊721和722中識別的圖形對象的類似信息相比較。
      [0081]正如以上討論的,在一些實施方式中,實施的基于圖像的自動化系統(tǒng)可以與另一個軟件自動化系統(tǒng)協(xié)作。例如,實施方法700的基于圖像的自動化系統(tǒng)可以在例如塊720中從另一個軟件自動化系統(tǒng)接收附加的語義信息或者其它信息,以定位圖形對象。另外,基于圖像的自動化系統(tǒng)可以向另一個軟件自動化系統(tǒng)提供語義信息或者其它信息。
      [0082]在定位指令中所描述的圖形對象后,在塊730中在圖形對象中執(zhí)彳丁指令中所描述的動作。換言之,實施方法700的基于圖像的自動化系統(tǒng)使該動作在塊720中所定位的圖形對象中執(zhí)行。作為特定的示例,與指令中所描述的動作關聯(lián)的操作系統(tǒng)事件或者動作(例如鼠標鍵按下事件)的事件描述符被提供給在托管自動化軟件應用的計算裝置中的操作系統(tǒng)的事件或者消息隊列。事件描述符可以包括與該動作關聯(lián)的事件和在計算裝置的顯示器中的圖形對象的位置(例如,X坐標和Y坐標)的標識符。該操作系統(tǒng)然后可以在圖形對象處生成該動作。
      [0083]如果在塊740中具有更多指令,則方法700進行到塊710來訪問另一個指令。如果沒有更多指令(例如,自動化程序對于自動化軟件應用是完成的),則方法700完成。
      [0084]方法700可以包括比圖7中示出的那些多或者少的塊。另外,可以將方法700的一個或多個塊重新排列。此外,盡管以上討論關于記錄階段中的基于圖像的自動化系統(tǒng)內(nèi)的示例環(huán)境的方法700,但是方法700在其它環(huán)境內(nèi)也適用。
      [0085]圖8是根據(jù)一種實施方式的包括處理器和存儲介質的系統(tǒng)的示意性框圖。如圖8所示,系統(tǒng)包括操作地連接到存儲介質821、存儲介質822以及存儲介質823的一個或多個處理器810。一個或多個處理器810可以訪問在存儲介質821、存儲介質822以及存儲介質823中的指令或者代碼。存儲介質821、822以及823可以是任何處理器可讀介質和/或訪問處理器可讀介質的相關裝置。例如,存儲介質821可以是包括磁存儲介質的硬盤驅動器,存儲介質822可以是諸如DVD驅動器的光驅并且可以接收諸如實施報告生成工具的處理器可讀指令的處理器可讀指令可以在其上存儲的DVD存儲介質,以及存儲介質823可以是具有通用串行總線("USB")接口的閃速存儲器驅動器。在一些實施中,存儲介質821、822和/或823可以相對一個或多個處理器810是本地的(例如,連接到公共的計算裝置)。在一些實施中,存儲介質821、822和/或823可以相對一個或多個處理器810是遠程的(例如,連接到分離的計算裝置并且經(jīng)由通信鏈路與一個或多個處理器810通信。此外,一個或多個存儲介質821、822和/或823可以是相對一個或多個處理器810是本地的并且其余的存儲介質821、822和/或823中的一個或多個可以是相對一個或多個處理器810是遠程的。
      [0086]作為更多特定的示例,一個或多個處理器810可以包括在諸如托管基于圖像的自動化模塊的計算裝置之類的計算裝置內(nèi),該計算裝置具有由存儲介質821表示的內(nèi)部硬盤驅動數(shù)據(jù)存儲器和由存儲介質822表示的諸如安全數(shù)字高容量("SDHC")存儲卡的固態(tài)數(shù)據(jù)存儲器。計算裝置還可以包括與由存儲介質823表示的USB閃速存儲驅動器通信的USB主機控制器。一個或多個處理器810可以訪問諸如實施在存儲介質821,822和/或823中的任一個之類的操作系統(tǒng)、諸如基于圖像的自動化系統(tǒng)和/或自動化軟件應用之類的軟件應用的處理器可執(zhí)行指令之類的處理器可執(zhí)行指令。換言之,一個或多個處理器810可以解釋或者執(zhí)行處理器可讀介質(例如,在存儲介質821、存儲介質822和/或存儲介質823中)中的指令。例如,計算裝置可以執(zhí)行存儲在遠程的存儲介質中的基于圖像的自動化系統(tǒng)。
      [0087]替換地,例如,存儲介質821和822可以相對于包括一個或多個處理器810的計算裝置是遠程的并且存儲介質823可以相對于那個計算裝置是本地的。包括一個或多個處理器810的計算裝置可以經(jīng)由諸如通信網(wǎng)絡的通信鏈路從遠程的存儲介質821或者822中的一個或者兩者將基于圖像的自動化系統(tǒng)下載到本地的存儲介質823并且從本地的存儲介質823執(zhí)行基于圖像的自動化系統(tǒng)。
      [0088]在一些實施方式中,系統(tǒng)800可以包括諸如RAM之類的一個或多個存儲器,該一個或多個存儲器作為用于在存儲介質821、存儲介質822和/或存儲介質823中的一個或多個存儲(或者可訪問的)指令或者代碼的存儲介質821、存儲介質822、和/或存儲介質823中的一個或多個和一個或多個處理器810之間的緩存。
      [0089]雖然以上已經(jīng)示出和描述了某些實施,但是可以在形式和細節(jié)中做出各種改變。例如,已關于一種實施方式和/或處理描述的一些特征可以與其它實施方式有關。換句話說,關于一種實施方式所描述的處理、特征、部件和/或特性可用于其它實施方式中。作為特定的示例,關于圖形用戶界面、圖形用戶界面的控件和/或軟件自動化所討論的實施方式適用于其它環(huán)境。作為另一示例,關于特定的模塊、引擎或者單元的以上討論的功能可以包括在其它實施方式中的不同的模塊、引擎或者單元中。此外,要理解的是,在本文中所描述的系統(tǒng)和方法可以包括所描述的不同實施方式的部件和/或特征的不同組合和/或子組合。因此,關于一個或多個實施方式所描述的特征可以與在本文中所描述的其它實施方式結合 ?
      【權利要求】
      1.一種處理器可讀介質,所述處理器可讀介質存儲表示使處理器執(zhí)行基于圖像的自動化處理的指令的代碼,該處理包括: 基于包括所述圖形對象的圖像來識別圖形用戶界面的圖形對象;以及 在所述圖形用戶界面處相對于所述圖形對象執(zhí)行動作。
      2.如權利要求1所述的處理器可讀介質,其中所述識別包括所述圖像的結構分析和所述圖像的語義分析。
      3.如權利要求1所述的處理器可讀介質,所述處理還包括: 訪問描述所述動作和所述圖形對象的指令,所述識別基于所述指令。
      4.如權利要求1所述的處理器可讀介質,其中所述動作是第一動作,所述處理還包括: 訪問描述復合動作和所述圖形對象的指令,所述識別基于所述指令;以及 相對于所述圖形對象執(zhí)行第二動作,所述第一動作和所述第二動作與所述復合動作關聯(lián)。
      5.如權利要求1所述的處理器可讀介質,其中: 所述圖形對象是復合圖形對象的單元;以及 所述識別包括識別所述復合圖形對象。
      6.一種基于圖像的自動化系統(tǒng),包括`: 用于識別圖像內(nèi)的圖形對象的結構分析模塊; 用于生成與所述圖形對象有關的語義信息的語義分析模塊;以及 用于基于所述語義信息確定動作是否與所述圖形對象關聯(lián)的時域分析模塊。
      7.如權利要求6所述的基于圖像的自動化系統(tǒng),其中所述結構分析模塊包括用于基于所述圖像的結構特征來識別所述圖形對象的分割引擎。
      8.如權利要求6所述的基于圖像的自動化系統(tǒng),其中所述結構分析模塊包括用于對所述圖形對象進行分類的分類引擎。
      9.如權利要求6所述的基于圖像的自動化系統(tǒng),其中所述動作是第一時間中的第一動作并且所述圖形對象是圖形用戶界面的控件,還包括: 圖像獲取模塊,所述圖像獲取模塊用于響應于所述第一時間后的第二時間中的第二動作來訪問所述圖像,所述第二動作在所述圖形對象處。
      10.如權利要求6所述的基于圖像的自動化系統(tǒng),其中: 所述動作是第一時間中所述圖形對象處的第一動作; 所述結構分析模塊配置為響應于所述第一時間后的第二時間在所述圖形對象處的第二動作來識別所述圖形對象; 所述語義分析模塊配置為響應于所述第二動作在所述第二時間后細化所述語義信息;以及 所述時域分析模塊配置為確定所述第一動作與所述圖形對象關聯(lián),并且基于所述語義信息來定義動作描述符。
      11.一種基于圖像的自動化方法,包括: 響應于動作來識別圖像中的圖形對象; 生成與所述圖形對象關聯(lián)的語義信息;以及 存儲包括所述語義信息的動作描述符。
      12.如權利要求11所述的基于圖像的自動化方法,其中所述動作是第一動作,所述方法還包括: 確定第二動作與所述圖形對象關聯(lián);以及 基于所述第一動作和所述第二動作來定義所述動作描述符。
      13.如權利要求11所述的基于圖像的自動化方法,其中所述動作描述符作為腳本文件中的指令被存儲。
      14.如權利要求11所述的基于圖像的自動化方法,還包括: 確定所述動作發(fā)生在所述圖形對象處。
      15.如權利要求11所述的基于圖像的自動化方法,其中所述語義信息包括所述動作的描述和所述圖形對象的描述。
      【文檔編號】G06F9/44GK103502936SQ201180070362
      【公開日】2014年1月8日 申請日期:2011年5月6日 優(yōu)先權日:2011年5月6日
      【發(fā)明者】沙吉·沙因, 奧梅爾·巴爾科爾, 盧斯·伯格曼, 大衛(wèi)·萊哈維, 阿耶萊爾·普努埃利, 約納特汗·利夫尼 申請人:惠普發(fā)展公司,有限責任合伙企業(yè)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1