[0043] 開示された主題によって対処される1つの技術的課題は、好ましくは、ロバストな方法でGUI要素を表現することである。ある例示的な実施形態では、GUI要素は、ボタン、ラベル、ツールチップ、ウィジェット、入力フィールド、テキストボックスなどであり得る。ウォークスルーの実行、分析のための情報の収集、プロセスの自動化、ディスプレイレイヤの追加、GUIの機能の拡張などを可能にするため、特定のGUIのGUI要素を自動的に取得することが望ましい場合がある。
[0044] ある例示的な実施形態では、GUI要素は、GUI内で識別され、かつ、自動化された手段によって参照されることが可能である場合、取得プロセスを使用して自動的に取得される。要素が取得されると、GUIが操作されて、取得された要素の色やラベルなどのプロパティを修正し得る。追加又は代替として、取得された要素のプロパティは、取得された要素に隣接する場所に別の要素を表示するなど、他の目的のために使用されるために照会及び調査され得る。
[0045] 一例として、ウォークスルーは、実行されると、「Calling Scripts Based Tutorials」と題された米国特許第9,922,008号に開示されているような、GUIに関連する記述要素を順次提示するチュートリアルであり得、当該特許は、否認を引き起こすことなくあらゆる目的のためにその全体が参照によって本明細書に組み込まれる。記述要素は、命令及び/又は使用例を含み得、かつ、ウェブドキュメント内の特定のHTMLオブジェクトなどのそれぞれのGUI要素に関連付けられ得る。記述要素をそれぞれのGUI要素の近くに配置することができるようにするため、GUI要素を自動的に取得する必要がある。GUI要素の取得はその表現に基づき得る。しかしながら、GUIに変更がある場合、表現はロバストでなくてもよく、取得は失敗する場合がある。
[0046] ある例示的な実施形態では、GUI要素は、経時的に一貫しているGUIの一意の識別子を有していなくてもよい。一例として、ボタン「OK」は、ソースコードでいかなるIDもボタン「OK」に関連付けられていなくてもよい。テキスト「OK」を有するボタンが複数あってもよい。したがって、テキスト「OK」を有するボタンを検索することによってボタンを取得することができない場合がある。
[0047] 追加又は代替として、ウェブページなどの異なるバージョンのGUIがあり得、それらの各々が、異なるテキストを有し得る。したがって、テキスト「OK」を有するボタンは、英語バージョンのウェブページで単語「OK」を検索することによって見つけられる可能性があり、かつ、ドイツ語バージョン、ヘブライ語バージョン、中国語バージョンなどの他のバージョンのウェブページでは見つけられない可能性がある。
[0048] 追加又は代替として、GUIのコードは動的に難読化され得る。例えば、ウェブページは、取得されるたびに難読化され得る。一例として、ウェブページのGUI要素は、オリジナルソースコードの「送信ボタン」である「ID」プロパティを有し得る。ウェブページが取得されるたび、難読化ツールは新規でランダムなIDプロパティを選択し得る。ID「送信ボタン」に基づいてGUI要素を取得しようとすると、テスト中にはもっともらしくあり得るが、本番環境で失敗する場合がある。追加又は代替として、難読化ツールは、ページが取得されるたびに新規IDを提供し得るので、取得が成功しても、将来の取得で使用されることができるIDに関するヒントが提供されない場合がある。
[0049] 開示された主題によって対処される別の技術的課題は、経時的に変化するプログラム内のGUI要素のロバストな取得プロセスを提供することである。プログラムは、新機能の追加、機能の削除、設計変更、バグ修正などの結果として、経時的に変化し得る。経時的に同じ要素を見つけるため、要素を確実に取得することが望ましい場合がある。一例として、アプリケーションは「今すぐ支払う」ボタンを有し得る。アプリケーションは経時的に変化し得る。例えば、「今すぐ支払う」ボタンは、アプリケーション内で場所を変化させたり、ボタンのサイズが変化したり、テキストが変化するなどし得る。支払いボタンを押したユーザの数、支払いを完了したユーザの数、ユーザが購入を完了するのにかかった時間などに関する使用情報を自動的に収集することが望ましい場合がある。そうして収集されたデータは、例えば、プログラムの有用なファネル分析を提供する際に使用され得る。支払いボタンの表現があると、GUIの支払いボタンを取得し、かつ、それとのインタラクションを識別することを可能にし得る。しかしながら、表現は、経時的にロバストではなく、かつ、同じボタンの取得を可能にすることに失敗する場合があり、及びしたがって、GUIボタンとのインタラクションを見逃す場合がある(及び、代わりに異なるGUI要素との相互作用の潜在的な原因となる)。したがって、経時的にロバストではない表現は、信頼性の高い自動的な使用分析を提供することに失敗する場合がある。同様に、非ロバストな取得は、例えば、「Automatic performance of user interaction operations on a computing device」と題された米国特許第9,934,782号の主題に開示されているような、ユーザインタラクションの自動実行に関する技術的課題を生み出し得、当該特許は、否認を引き起こすことなくあらゆる目的のためにその全体が参照によって本明細書に組み込まれる。
[0050] 開示された主題によって対処されるさらに別の技術的課題は、プラットフォームを切り替えるプログラム内のGUI要素を確実に取得することである。一例として、プログラムは、WINDOWS(登録商標)用のネイティブバージョンと、モバイルデバイス用のハイブリッドバージョンと、を有し得る。異なるバージョンを通じてGUI要素を取得することを可能にするようにGUI要素を確実に取得することが望ましい場合がある。
[0051] 1つの技術的解決策は、その中の対象の要素の視覚的表示を有する第1GUIと、推定された対応の要素の視覚的表示を有する第2GUIと、を組み合わせて表示することである。
[0052] ある例示的な実施形態では、画面、フォーム、ウェブドキュメント、ANDROID(登録商標)レイアウト、iOS(登録商標)プレイグラウンドオブジェクトなどのようなプログラムのGUIは、対象のGUI要素を含む複数のGUI要素を含み得る。別のGUIバージョンもGUI要素を含み得ることが推定され得る。
[0053] ある例示的な実施形態では、GUIが互いに隣り合って又は上下に並べて提示される並び構成などで、2つのGUIが並行してユーザに提示され得る。ユーザは、ディスプレイを見て、推定された対応の要素が実際に対象の要素に対応するかどうかを示し得る。場合によっては、ユーザは、推定された取得を検証し、推定された取得を拒否し、代替の正しい取得を明示的に示すなどし得る。ある例示的な実施形態では、ユーザによる入力が使用されて、関連のGUI要素に関して使用される取得プロセスを更新し得る。場合によっては、取得プロセスによって利用される表現はユーザ入力に基づいて修正され得る。ある例示的な実施形態では、GUI要素の表現は、互いに独立して適用されることができる代替表現のセットを含み得る。表現が更新されて、ユーザ入力に適合しない代替表現を削除し得る。例えば、2つの要素が対応していることをユーザが検証した場合、表示されたものとは異なる要素を生じさせる任意の表現が削除され得る。別の例として、ユーザが、提案された対応の要素を拒否した場合、提案された対応の要素を提供する任意の代替表現が削除され得る。
[0054] ある例示的な実施形態では、ユーザによる入力が使用されて情報にラベルを付け得、ラベル付けされた情報が使用されて、人工ニューラルネットワーク(ANN)、ディープニューラルネットワーク(DNN)、サポートベクターマシン(SVN)、ディシジョンツリーなどを使用して実装されるような機械学習モデルを訓練し得る。ラベル付けされたデータは、機械学習モデルを訓練するために使用されることができる訓練データセットに追加され得る。
[0055] ある例示的な実施形態では、推定された取得をユーザが拒否する場合、同じGUIのための代替取得がユーザのレビューのために提供され得る。ある例示的な実施形態では、不確定な結果をもたらす表現セットは、2以上の潜在的な候補を提供し得る。各候補は、潜在的な候補としてレポートされ得る。ある例示的な実施形態では、信頼度尺度、候補間のランク付けなどが提供され得る。例えば、複数の代替表現を含む表現セットが、3つの異なる候補:要素A、B及びCを生成する場合、それらはランク付けされ得る。要素Aを示す代替表現の90%、要素Bを示す代替表現の7%及び要素Cの3%が取得される必要がある場合を想定すると、候補はそれに応じてランク付けされ得る:要素Aが最上位ランクの要素であり、要素Bが続き、最下位ランクの要素が要素Cであり得る。
[0056] 追加又は代替として、ユーザは、例えば、マウスポインタ、ポインティングデバイス、タッチスクリーンなどを使用するなどして、正しい要素を選択することによって、手動で正しい代替取得を明示的に示し得る。
[0057] 別の技術的解決策は、機械学習モデルを利用して、訓練データセットに基づいて、既存のGUIとその中の要素の識別とに基づいて新しいGUIの要素を取得する方法を学習することである。
[0058] ある例示的な実施形態では、機械学習モデルは、特徴ベクトルを受け取り、かつ、ラベルを提供するように構成され得る。ある例示的な実施形態では、特徴ベクトルは、第1GUIを表す第1サブベクトル、第2GUIを表す第2サブベクトル、及び、第1GUIの対象の要素を表す第3サブベクトルを含み得る。追加又は代替として、第3サブベクトルは、対象の要素を表すために使用されるプロパティ(例えば、表現、表現セットなど)を提供し得る。ある例示的な実施形態では、ラベルは、第2GUIの対象の要素の特性又は同一性を示すラベルであり得る。追加又は代替として、特徴ベクトルは、第1GUIを表す第1サブベクトル、第2GUIを表す第2サブベクトル、第1GUIの対象の要素を表す第3サブベクトル、及び、第2GUIの候補要素を表す第4サブベクトルを含み得る。ラベルは、候補要素が対象の要素に対応するかどうかの信頼度尺度を提供し得る。ある例示的な実施形態では、特徴ベクトルは、画面、GUI要素、GUIコンテキストなどに関連する特徴を含み得る。
[0059] ある例示的な実施形態では、機械学習モデルが利用されて、他のバージョンのGUIの対象の要素を識別し得る。場合によっては、候補が機械学習モデルに提示され得、モデルは、候補がオリジナルのGUIの対象の要素に実際に対応する可能性に関する信頼度尺度を提供し得る。
[0060] ある例示的な実施形態では、要素の取得は、2019年4月30日に出願された「GUI ELEMENT ACQUISITION USING A PLURALITY OF ALTERNATIVE REPRESENTATIONS OF THE GUI ELEMENT」と題された国際特許出願第PCT/IL2019/050475に詳細に開示されているように、表現セットなどのGUI要素の表現を使用して試行され得、当該出願は、否認を引き起こすことなくその全体が参照によって本明細書に組み込まれる。表現セットは複数の代替表現を含み得る。ある例示的な実施形態では、表現セットは、代替表現の各々を独立して適用することによって、GUI要素が取得される画面上に適用され得る。ある例示的な実施形態では、代替表現の各々は、GUI要素を一意に識別するために十分であり得る。代替表現の結果が、一致し、かつ、画面内の単一の要素を識別する場合、表現セットは確定的な結果を提供するものとみなされ得る。そうでない場合、表現セットが、不確定な結果を提供するものとみなされ得る。
[0061] ある例示的な実施形態では、表現は、GUI要素を識別するためにGUI要素の属性を使用し得る。属性は、要素の識別子、要素に関連付けられたテキスト、要素の色などであり得る。追加又は代替として、表現は、画面内のGUI要素の階層内のGUI要素への絶対パスを使用し得る。ある例示的な実施形態では、GUI要素は、1以上のサブGUI要素を含み得る。GUI要素は、有向非巡回グラフ(DAG)、ツリー又は別の形式のグラフで表され得る。GUIは、ルート要素を含み得、ルート要素からGUI要素へのパスはGUI要素への絶対パスとみなされ得る。追加又は代替として、表現は、ソースGUI要素からターゲットGUI要素への相対パスを使用し得る。GUI要素への相対パスは、ソースGUI要素からターゲットGUI要素へのパスであり得る。そうした表現は、ソースGUI要素の取得に基づいて、ターゲットGUI要素を取得することを可能にし得る。ある例示的な実施形態では、表現は、1以上の他のGUI要素の1以上の属性を使用してGUI要素を表し得る。例えば、表現は、クエリを使用して他の要素又は構造を識別し、かつ、構造プロパティ、要素の属性などのプロパティに基づいてそれらの間でGUI要素を選択し得る。一例として、代替表現は、「属性<A1>及び<A2>を有する要素を含むサブツリーの最も深いルートである要素を見つけること」であり得る。この例では、属性<A1>を有する要素と属性<A2>を有する要素と(同じ要素あり得る又は異なる要素であり得る)を含むすべてのサブツリーが識別され得る。そうしたサブツリーの各ルートが調べられ得、かつ、そうしたサブツリーのルートとして機能してGUIを表すツリーのルートから最大距離を有するノードが選択され得る。
[0062] ある例示的な実施形態では、ドキュメントオブジェクトモデル(DOM)は、HTML、XHTML又はXMLドキュメントに基づくGUIなどのGUIのためのツリー構造表現を提供し得る。DOMの論理ツリー構造では、各ノードは、ドキュメントの一部を表すオブジェクトであり得る。DOMが利用されて、GUIの所望のパスをトラバースし得る。
[0063] さらに別の技術的解決策は、類似性モデルの利用を含み得る。類似性モデルは、機械学習を使用して又は使用せずに実装され得る。類似性モデルは、第1要素及び第2要素を受け取り、それらの類似性を決定するように構成され得る。ある例示的な実施形態では、類似性メトリックは、2つの要素が同じであるという信頼度に関連付けられ得る。一例として、類似性メトリックは、2つの要素が同一である場合に値「0」が提供される距離メトリックであり得る。追加又は代替として、類似性モデルは、第1GUI及び第2GUIを含み得、第1要素は第1GUIによって構成され、第2要素は第2GUIによって構成される。類似性モデルは、それらが配置されているGUIを考慮して、2つの要素間の類似性を決定するように構成され得る。ある例示的な実施形態では、取得プロセスは、取得される要素に最も類似している要素を識別するするために類似性モデルを適用することなどによって、類似性モデルを利用し得る。そうした識別された要素は、取得された要素であり得る。ある例示的な実施形態では、類似性モデルは、本明細書に記載されるような信頼度尺度を提供する機械学習モデルなどの機械学習モデルを使用して実装され得る。類似性モデルは、過去の取得プロセスが成功したか否かを示す、ユーザ提供の入力に基づいて更新され得る。
[0064] さらに別の技術的解決策は検出モデルの利用を含み得る。検出モデルは、オリジナルのGUIのオリジナルの要素に対応するGUIの要素を検出するように構成され得る。検出モデルは、検出が所望されるGUIを表す特徴ベクトルを受け取り得る。ある例示的な実施形態では、異なる要素に対して異なる検出モデルが提供され得る。ある例示的な実施形態では、各検出モデルは、内部的に、オリジナルのGUI、オリジナルの要素などのプロパティに基づき得る。
[0065] ある例示的な実施形態では、検出モデルが利用されて取得プロセスを実行し得る。過去の取得プロセスに関する入力が利用されて検出モデルを更新し得る。ある例示的な実施形態では、検出モデルは、機械学習を使用して実装され得る又はされない場合がある。機械学習が利用される一実施形態では、検出モデルは、GUIで取得するための要素を識別するように訓練された訓練されたモデルであり得る。モデルは、開示された主題に従って提供されたラベル付けされたデータに基づいて再訓練され得る。
[0066] さらに別の技術的解決策は、モデルジェネレータを利用して、GUIのGUI要素の取得を実行するために使用されるべき検出モデルを生成することを含み得る。ユーザ提供の情報が利用されて、モデルジェネレータを更新し、それによって生成される将来の検出モデルを改善し得る。ユーザ入力は、モデルジェネレータによって生成された検出モデルを使用して検出された要素が実際に正しい要素であるか又は正しくない要素であるかを示す入力であり得る。
[0067] さらに別の技術的解決策は、GUIを記録する複数のクライアントデバイスを含み得る。クライアントデバイスは、それらが遭遇するGUIの対象の要素の取得を実行することを試行し得る。ある例示的な実施形態では、すべての取得の試行(成功又は失敗)がサーバにレポートされる。追加又は代替として、失敗した取得の試行のみがサーバにレポートされる。追加又は代替として、閾値を下回る信頼度尺度を有する成功した取得の試行がサーバにレポートされ得る。レポートされた取得の試行に基づいて、解決(resolution)エントリがリポジトリで作成又は更新され得る。サーバは、そこからガイダンスを得る試行において、解決エントリを取得し、かつ、そうした解決エントリを人間のユーザに表示し得る。ユーザのガイダンスに基づいて、解決エントリは、解決、スヌーズ又は無視されるように示され得る。ユーザ情報は、機械学習モデルを訓練し、類似性モデルを更新し、検出モデルを更新し、モデルジェネレータを更新するためなどに利用され得る。追加又は代替として、ユーザ情報が利用されて、実行されるべき将来の解決のためのガイダンスを提供し得る。場合によっては、更新されたモデル自体が、それによって利用されるべきクライアントデバイスに分配され得る。モデルは、情報が収集されるにつれて改良され、改善され及び再分配され得る。追加又は代替として、経時的に異なるコンピュータ化された環境でロバストな取得を実行することを可能にするためなど、モデルを使用して、対象の要素のロバストな表現が決定され、かつ、クライアントデバイスに提供され得る。
[0068] ある例示的な実施形態では、エンドユーザは、クライアントデバイス上で実行されるブラウザ、クライアントデバイス上で実行されるアプリケーションなどを使用し得る。ある例示的な実施形態では、クライアントデバイス上で実行されるエージェントは要素の表現を得うる。追加又は代替として、エージェントは、エンドユーザによって現在見られている画面上に表現を適用し得る。エージェントは、既定のプロセスを実行するためのGUI要素を取得するために表現を利用し得る。エージェントは、表現を適用することで不確定な結果が得られたと決定し得る。表現を適用することで不確定な結果が得られたと決定したことに応答して、エージェントはその情報をサーバに伝達し得る。サーバは、修正された表現セットを決定するための表現を修正するように構成され得る。ある例示的な実施形態では、エージェントは、将来の使用のためにサーバから修正された表現を得うる。そうした修正は、1日、1週などの遅延したタイミングで、かつ、エージェントが遭遇した不確定な解決を表す解決エントリにユーザが参加した後に、提供され得る。ある例示的な実施形態では、サーバは、プッシュ又はプル方式で、GUI要素を取得するように構成され得る複数のエージェントに修正された表現を分配し得る。
[0069] ある例示的な実施形態では、エージェントは、クローラ、スクリプト、ソフトウェア製品、ボット、ユーザ操作のクライアントなどであり得る。ある例示的な実施形態では、エージェントは、ユーザ操作のクライアントであり得、ユーザは、セッションでユーザが遭遇する特定の画面を保存するようにクライアントに命令し得る。追加又は代替として、エージェントは、ユーザの命令なしにユーザがアクセスしたウェブサイトをレポートし得る。追加又は代替として、エージェントは、ウェブサイトをクロールし、かつ、ウェブサイトを自律的にレポートし得る。エージェントは、クライアントデバイス上で実行され、かつ、サーバに情報を伝達し得る。サーバは、開示された主題に従って情報を使用するために情報を保存し得る。
[0070] ある例示的な実施形態では、表現セットを適用することで不確定な結果が得られると決定したことに応答して、GUIはユーザに表示され得る。ある例示的な実施形態では、ユーザは、取得が実行されたデバイスを使用するエンドユーザとは異なる管理者ユーザであり得る。ユーザは、GUIのGUI要素を識別し、GUIのGUI要素を選択し、GUIのGUI要素をマークするなどし得る。ある例示的な実施形態では、不確定な結果が複数のGUI要素を含む場合、表現セットによって識別されるGUI要素がユーザに表示され得る。ユーザは、それらの中から1つのGUI要素を選択し得る。追加又は代替として、コンピュータ化されたプロセスは、複数のGUI要素から最上位の候補を自動的に選択し、かつ、ユーザが自動選択を検証することを可能にし得る。サーバは、ユーザの選択を保存し、それに基づいて表現を修正し得る。ある例示的な実施形態では、ユーザの選択は、将来の使用のために記録及び保存され得る。一例として、ユーザの選択は、教師あり機械学習アルゴリズムのデータの一部として使用され得る。
[0071] 開示された主題を利用することの1つの技術的効果は、GUI要素のロバストな取得である。ある例示的な実施形態では、取得は、エージェントによって自動的に達成され得る。エージェントは、ウォークスルーを表示及び実行すること、GUIでの拡張表示を提供すること、1ユーザ又は複数ユーザのアクションを分析すること、テスト自動化を実行することなど、取得された要素を使用して有用なプロセスを実行するように構成され得る。ロバストな取得は、手動の介入又は支援を必要とせずに、異なるバージョンのプログラム、異なるバージョンのGUIなどに関して実行され得る。
[0072] 開示された主題を利用することの別の技術的効果は、GUI要素のロバストな表現を決定することである。プログラムのGUIは、バージョン、UX、プログラムの機能などの変更により、経時的に変化し得る。開示された主題を利用することにより、たとえ表現が定義されたときに利用可能であったGUIからGUIが変更されたとしても、GUIのGUI要素を取得することが可能であり得る。ある例示的な実施形態では、GUI要素が変化し得、GUI要素を含むプログラムのGUIが変化するなどし得る。一例として、GUI要素は、GUI要素に関連付けられたテキストを使用することによって取得され得る。GUI要素は、テキスト「いいね」を含むボタンであり得る。プログラムの新しいバージョンのGUIは、テキストを別の言語やアイコンなどに変更し得る。開示された主題は、そうした変更に関わらず、GUI要素を取得するための方法を提供し得る。
[0073] 開示された主題を利用することのさらに別の技術的効果は、専用のアプリケーションプログラミングインタフェース(API)を使用せずにGUIを使用してビジネスプロセスを実行する、自動化をテストするなど、プログラムの自動化プロセスを可能にすることである。GUI要素を確実に取得することで、自動化プロセスが正しく機能することを可能にし、及びしたがって、エラーを手動で検査した後の再実行に必要なリソースを削減し得る。
[0074] 開示された主題を利用することのさらに別の技術的効果は、ユーザの介入なしに、GUI表現の自動修正を可能にすることであり得る。機械学習技術を使用して、開示された主題は、表現を自動的に定義し得る。追加又は代替として、表現セットが失敗し、不確定な結果を提供する可能性がある場合でも、開示された主題は、表現を修正して確定的な結果を提供し、かつ、ターゲットGUI要素を正しく取得する自動化された方法を提供し得る。
[0075] 開示された主題を利用することのさらに別の技術的効果は、GUIの機能を拡張すること、GUIに適応可能なウォークスルーを提供すること、GUI上にディスプレイレイヤを追加すること、使用統計を収集することなどのGUIの強化を可能にすることである。GUIの強化はGUI要素の自動取得を必要にし得る。開示された主題は、ロバストな取得を提供し、GUIへの変更にも関わらず、GUIの強化が経時的に適切に機能することを可能にし得る。
[0076] 開示された主題を利用することのさらに別の技術的効果は、GUI要素の表現を利用するプロセスにおけるリソース消費の改善であり得る。開示された主題は、経時的に耐久性を有する表現を提供し、GUIの各修正によって、又は異なる言語、異なるプラットフォームの場合など、GUIの各代替バージョンについて、手動で表現を再定義する必要性を回避し得る。
[0077] さらに別の技術的効果は、GUI及びウェブサイトの修正、GUI及びウェブサイトの修正における精密かつ正確な方法での要素の識別などを予測することができる予測モデルの生成である。予測モデルは、GUIが経時的にどのように変化するかを暗黙的にモデル化し、かつ、GUI設計の傾向を識別するために使用され得る。予測モデルは、類似のGUIがどのように修正されたかに基づいて、GUIの自動修正を提案するための基礎として使用され得る。
[0078] さらに別の技術的効果は、機械学習モデルを反復的に訓練するのに有用な情報の大規模なコーパスの編集であり、これは現実の実装での展開に適している。情報は、システムが動作している間、及び、システムが手動操作で動作することを条件とせずに収集され得る。代わりに、システムは、そのまま操作され、かつ、収集した情報は、ユーザによる手動ラベル付けに利用され得る。各手動ラベル付けは、システム上で有用な用途を有している場合もあり、及びしたがって、機械学習モデルを訓練するためではなく、そのために実行され得る。
[0079] 開示された主題は、既存の技術及び当技術分野で以前に日常的又は従来技術になった任意の技術に対する1以上の技術的改善を提供し得る。追加の技術的課題、解決策及び効果は、本開示を考慮すれば、当業者には効果が明らかであり得る。
[0080] ここで、開示された主題のある例示的な実施形態に係る環境を示す図1を参照する。
[0081] 環境100は、複数のクライアントデバイス110を含み得る。クライアントデバイス110は、パーソナルコンピュータ(PC)、タブレット、スマートフォンなどであり得る。クライアントデバイス110は、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、無線ネットワーク、インターネット、イントラネットなどのコンピュータ化されたネットワーク105に接続され得る。
[0082] 環境100は、コンピュータ化されたネットワーク105に接続され得るサーバ120を含み得る。追加又は代替として、管理者140又は適切な資格及び許可を有する別のユーザによって操作される、デスクトップコンピュータ、携帯電話、タブレットコンピュータなどの管理者コンピュータ130は、コンピュータ化されたネットワーク105に接続され得る。ある例示的な実施形態では、サーバ120及び管理者コンピュータ130は、コンピュータ化されたネットワーク105などを介してなど、直接的に、間接的に、互いに接続され得る。ある例示的な実施形態では、サーバ120及び管理者コンピュータ130は、同じ物理デバイスによって実装され得る。
[0083] ある例示的な実施形態では、エージェント115がクライアントデバイス110上で実行され得る。ある例示的な実施形態では、各クライアントデバイス110は、対応のエージェント115を実行し得る。追加又は代替として、クライアントデバイス110の一部のみがエージェント115を実行し得る。エージェント115は、これらに限定されないが、スクリプト、ソフトウェア、ブラウザ拡張、モバイルアプリケーション、ウェブアプリケーション、ソフトウェア開発キット(SDK)、共有ライブラリ、ダイナミックリンクライブラリ(DLL)などのコンピュータによって実行可能なプログラム製品であり得る。
[0084] クライアントデバイス110は、GUIを有するプログラムを実行するように構成され得る。プログラムは、例えば、ウェブページ、ウェブアプリケーション、ブラウザ拡張、モバイルアプリケーション、デスクトップアプリケーションなどであり得る。プログラムは、GUI要素を含むGUIを構成する1以上の画面をエンドユーザに表示し得る。
[0085] ある例示的な実施形態では、エージェント115は、GUIに現れるGUI要素を識別するために取得プロセスを実行するように構成され得る。例えば、エージェント115は、特定のインタラクティブボタン、テキスト要素、ツールチップなどを取得し得る。GUI要素取得プロセスは、エージェント115が所望の機能を実装することができるようにするために実行され得る。ある例示的な実施形態では、エージェント115は、プログラムに関するユーザアクティビティを追跡し得、及び特に、GUI要素に関連する使用統計を監視し得る。追加又は代替として、エージェント115は、GUIベースの自動化を実装し、エンドユーザに代わってGUIと自動的に相互作用し、ユーザ入力を模倣し得る。追加又は代替として、エージェント115は、GUIの修正、既存のGUI要素の削除、新しいGUI要素の追加などのGUI操作を実装し得る。追加又は代替として、エージェント115は、ウォークスルーの要素がGUI要素に隣接する場所に表示され得、GUIに表示されるGUI要素などに関連する行動喚起をエンドユーザに提供する、ウォークスルーを実装し得る。
[0086] ある例示的な実施形態では、エージェント115は、GUI要素の表現を得るように構成され得る。エージェント115は、GUIのGUI要素を取得するため、GUI上に表現を適用し得る。ある例示的な実施形態では、表現を適用することは、GUIの任意のGUI要素を識別することに失敗し得る。追加又は代替として、表現を適用すると、複数の候補要素を識別することに起因して不確定な結果が得られ得る。
[0087] 一例として、GUIに現れ、かつ、電子メールコンテナに現れる新しい電子メールの作成に関連する「新規」ボタンを取得することが望ましい場合がある。ある例示的な実施形態では、GUI要素を取得するために使用され得る1つの表現は、「タイプ=ボタン」及び「ラベル=新規」のプロパティを有する要素を検索することであり得る。別の代替表現は、プロパティ「タイプ=ボタン」及び「親(parent)=電子メールコンテナ」を有する要素であり得る。表現セットは、両方の代替表現を含み得、その各々がGUI要素を識別するのに十分であり得る。しかしながら、ある例示的な実施形態では、GUIは、電子メールコンテナ、連絡先コンテナ、イベントコンテナなどのような複数のコンテナを含み得、その各々は「新規」ボタンを含み得る。結果として、第1代替表現は、それによって定義されたプロパティに一致する3つの異なる要素があり得るので、GUIに適用されると、3つの異なるGUI要素を提供し得る。第2代替表現は、依然として固有の結果、すなわち、GUI要素を提供し得る。こうした不一致は、不確定な結果を提供する表現セットとみなされ得る。別の例として、表現は「タイプ=ボタン」及び「親=電子メールコンテナ」プロパティのみに基づいており、かつ、単一の要素を識別し得る。しかしながら、ラベルが「新規」ではなく「キャンセル」であるなど、要素の他のプロパティの不一致により、信頼度尺度が既定の閾値を下回るように計算され得、かつ、取得が潜在的に誤っているものとみなされ得る。
[0088] ある例示的な実施形態では、エージェント115は、取得に関する情報をサーバ120に通信し得る。ある例示的な実施形態では、エージェント115は、不確定な取得、閾値を下回る信頼度尺度を有する取得などをレポートし得る。ある例示的な実施形態では、サーバ120は、そうした情報を得、かつ、開示された主題に従って情報を利用するように構成され得る。ある例示的な実施形態では、経時的に、レポートされた取得にユーザが対処するとき、表現は、サーバ120によって修正され、かつ、関連の要素の取得を試行し得るクライアントに潜在的に分配され得る。
[0089] ある例示的な実施形態では、表現を適用することは、結果を提供することに失敗すること、空の結果を提供することなどによって、要素をうまく取得しない場合がある。そうした表現は正しいものであり得ることに留意されたい。一例として、機能は1つのオペレーティングシステム(OS)で利用可能であり得、かつ、別のオペレーティングシステム(OS)では利用可能ではない場合がある。GUIの第1バージョンは、2つの異なるOSで同一であり得る。機能は、ボタンを使用して表され得る。GUIの第1バージョンは、すべてのOSでボタンを含み得る。GUIの第2バージョンは、OS固有であり得、かつ、あるOSのためのボタンを含み得、別のOSのボタンを含まなくてもよい。GUIの第1バージョンに表現を適用すると、GUIが得られたOSに関わらず、ボタンが提供され得る。GUIの第2バージョンに表現を適用すると、GUIが第1OSから得られたときにボタンが提供され得る。追加又は代替として、第2OSから得られたGUIに表現を適用しても、GUI要素がそのGUIに実際に存在しないので、結果が得られない場合がある。
[0090] ある例示的な実施形態では、サーバ120はGUIを保持し得る。ある例示的な実施形態では、エージェント115は、それによって遭遇したGUIをサーバ120に送信するように構成され得る。ある例示的な実施形態では、遭遇した各GUIが送信され得る。追加又は代替として、取得が実行された又は実行可能であるGUIが送信され得る。ある例示的な実施形態では、取得が失敗した又は成功したが、相対的に低い信頼度スコアを有するGUIがサーバに提供され得る。ある例示的な実施形態では、保持されるGUIは、ハイパーテキストマークアップ言語(HTML)文書、スクリーンキャプチャ画像、GUIの要素及びそれらのプロパティを表す拡張可能なマークアップ言語(XML)文書、ドキュメントオブジェクトモジュール(DOM)ファイル、ANDROID(登録商標)レイアウト又はGUIの任意の他のデジタル表現などの、表示されるGUIのデジタル表現であり得る。
[0091] ある例示的な実施形態では、エージェント115はサーバ120に解決クエリを提供し得る。解決クエリは、オリジナルのGUI、その中の対象の要素及び別のGUI、又は、それらの表現を含み得る。ある例示的な実施形態では、解決クエリは、他のGUIの候補要素をさらに含み得る。ある例示的な実施形態では、解決クエリは、オリジナルのGUIの対象の要素に対応する他のGUIの要素の取得を要求するために提供され得る。ある例示的な実施形態では、要素を取得することを試行するエージェント115に応答して、複数の候補が識別され得る。同じオリジナルのGUI、同じ対象の要素、同じ他のGUI、ただし、異なる候補要素を有するクエリのセットを提供するため、候補ごとに個別のクエリが発行され得る。ある例示的な実施形態では、解決クエリに基づいて、解決データリポジトリが検索され得る。ある例示的な実施形態では、サーバは、解決クエリに一致するデータリポジトリの解決エントリを検索し得る。エントリは、以前のクエリから存在し得、かつ、開示された主題に従って、潜在的に以前に解決されている。エントリが存在しない場合、新しいエントリがリポジトリに追加され得る。エントリが存在する場合、解決が遭遇された回数をカウントするカウンタが増やされ得る。追加又は代替として、エントリが以前に解決された場合、ラベルがすでに利用可能であり得、かつ、結果は知られ得る。そうでない場合、エントリが解決されなかったが、エントリが「スヌーズ」ステータスであった場合、開示された主題に従って、エントリが手動解決のために再び開かれ得る。ある例示的な実施形態では、以前に解決され、かつ、誤った候補取得としてラベル付けされた解決に関するクエリが遭遇した場合、エージェント115のうちの1つによって以前に識別された誤った取得がどのようにして再び試行されたかを判断するために、フラグが立てられ得る。場合によっては、クエリを発行したエージェント115が古い表現を利用した場合、そうしたフラグは、エージェント115の表現の強制更新をトリガして、将来の取得の失敗を防ぎ得る。
[0092] 環境100は、管理者コンピュータ130、及び、オペレータ、監督者、管理者などであり得るユーザ140を含み得る。ある例示的な実施形態では、管理者コンピュータ130は、解決データストレージに基づいて、管理者140に情報を表示するように構成され得る。追加又は代替として、管理者コンピュータ130は、解決クエリに関連付けられたエージェント115によってキャプチャされたように、管理者140にGUIを表示するように構成され得る。ユーザ140は、表示されたGUIのGUI要素の選択を行い得る。ある例示的な実施形態では、対象の要素の視覚的表示を有するオリジナルのGUIと、要素が取得されるべきGUIとの両方を示す並列の表示が提示され得る。場合によっては、候補要素が他のGUIに視覚的に提示され、管理者140が候補を承諾する又は拒絶することを可能にし得る。管理者140から、他のGUIで取得されるべき要素を示すユーザ入力を得ることに応答して、情報は、将来の使用のために保持され得る。追加又は代替として、情報は、ラベル付けされたデータとして、訓練のために機械学習ツールに提供され得る。
[0093] 追加又は代替として、管理者コンピュータ130は、表現によって識別されるように、GUI要素の視覚的表示と共に、オリジナルのGUIを管理者140に表示するように構成され得る。表示は、取得が実行される現在のGUIをさらに含み得る。ある例示的な実施形態では、表示は、オリジナルのGUIと現在のGUIとを並列に表示し得、管理者140が両方のGUIを同時に視覚的に見て、それらを比較し、かつ、それらの要素間の相関を識別することを可能にする。
[0094] 追加又は代替として、表示は、GUI要素の候補の視覚的表示を含み得る。候補は、例えば、サーバ側で自動的に決定され得る。例えば、候補は、表現セットの代替表現の過半数に基づいて決定され得る。追加又は代替として、各代替表現は重みに関連付けられ得、かつ、重みに基づいて、各候補のスコアが計算され得、最高スコアの候補の選択を可能にする。追加又は代替として、予測モデルが利用されて、予測された選択を決定し得る。ある例示的な実施形態では、候補要素は、エージェント115によって行われた計算又は決定に基づいて提供されるような、解決クエリの一部として提供され得る。例えば、クエリが2つの潜在的な候補が識別される候補セットの不確定な解決の結果である場合、クエリは最も可能性の高い候補を示し得る。追加又は代替として、各々異なる候補を有する2つのクエリが発行され得る。追加又は代替として、クエリは潜在的な候補の各々を示し得る。
[0095] ある例示的な実施形態では、表示は、候補要素を示す位置にスクロールバーを設定するなど、推定されたGUI要素に中心を置かれ得る。追加又は代替として、オリジナルのGUIは、同様に対象の要素に中心を置かれ得る。ある例示的な実施形態では、GUIのセンタリングは、ユーザに見えるGUIの表示された部分が関連の要素を含むようにGUIを設定することを含み得る。場合によっては、関連の要素は、表示された部分の中心を置かれた高さ、中心を置かれた幅、又はそれらの組み合わせで配置される。
[0096] ある例示的な実施形態では、管理者140は、GUI要素の推定が正しいかどうかを検証し得る、又は代替として、それが正しくないことを示し得る。ある例示的な実施形態では、不正確な推定を示したことに応答して、次善の推定が表示され得るなどである。追加又は代替として、次の推定された候補を表示すると、表示は、次の推定された候補を再び中心に置かれ得る。追加又は代替として、管理者140は、明示的な方法でGUI要素を手動で選択し得る。ある例示的な実施形態では、ユーザ入力は、教師あり学習、半教師あり学習、教師なし学習などの機械学習アルゴリズムによって使用され、人間のユーザを自動分類器で置き換えることができる予測モデルを提供し得る。
[0097] ある例示的な実施形態では、サーバ120は、対象の要素の表現を更新し、かつ、それをエージェント115に分配し、それによって、取得プロセスを更新し得る。ある例示的な実施形態では、エージェント115は、修正された表現を得て、それを、GUI要素を取得するための表現として利用するように構成され得る。ある例示的な実施形態では、エージェント115は、修正された表現を、現在のGUI又は追加のGUIに適用し得る。
[0098] ある例示的な実施形態では、表現を適用する試行は、使用されるべき表現の選択の改善を可能にするために、機械学習アルゴリズムによって保持及び使用され得る。改善された選択は、GUI要素のプロパティ、調査される表現のプロパティを考慮し、かつ、予測モデルを使用して、調査される表現のロバスト性を経時的に推定し得る。追加又は代替として、改善された選択は、表現のロバスト性を推定するために使用される機能の一部としてGUI要素を一意に識別する他の表現を考慮に入れ得る。追加又は代替として、改善された選択は、(特定のタイプの又は一般的に)不確定な結果を提供した他の表現、非ロバストであることが示された表現(例えば、最初に一意の識別を提供し、かつ、後で非一意の識別を提供する)などを考慮に入れ得る。追加又は代替として、改善された選択は、GUIコンテキスト、GUIのプロパティなどを考慮に入れ得る。
[0099] ある例示的な実施形態では、GUIは、GUIコンテキストに関連付けられ得る。GUIコンテキストは、GUI、GUIを使用するユーザ、GUIを実行するために使用されるデバイス、デバイスの接続状態などに関連するプロパティであり得る。一例として、GUIコンテキストは、使用されているデバイスのオペレーティングシステム(OS)を含み得る。別の例として、GUIコンテキストは、言語設定、地域の場所、タイムゾーンなどのようなデバイスのロケールを含み得る。さらに別の例として、GUIコンテキストは、ユニファイドリソースアイデンティファイア(URI)、スクリーンネームなどのGUIの識別子を含み得る。さらに別の例として、GUIコンテキストは、許可、設定、役割などのようなログインユーザのプロパティを含み得る。さらに別の例として、GUIコンテキストは、画面サイズ、向き、解像度、ネットワーク接続などのデバイスのハードウェアプロパティを含み得る。ある例示的な実施形態では、第1クライアントデバイス110上で実行される第1エージェント115は、GUI要素を一意に識別し得る一方、第2クライアントデバイス110上で実行される第2エージェント115は、GUIコンテキストの相違に起因して、同じGUIに対して不確定な結果を提供し得る。
[0100] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図2を参照する。
[0101] ステップ200で、GUI要素の表現が決定される。ある例示的な実施形態では、サーバは、将来、クライアントデバイスによるアクションを実行するためにGUI要素を取得するために使用されるべき表現を決定し得る。
[0102] 表現は単一のアトミック表現であり得る。追加又は代替として、表現は、複数の代替表現を含む表現セットであり得、これらの表現の各々は、プログラムのGUIのGUI要素を識別する方法を提供し得る。
[0103] 画面とも呼ばれるGUIの要素は、自動化プロセス、ウォークスルーなどの一部として使用されるように選択され得る。追加又は代替として、要素の選択は、性能測定値が追跡され得る要素などの対象の要素に関連して、自動的に実行され得る。ある例示的な実施形態では、GUI要素は、GUIを有するプログラムが呼び出されたときなど、将来取得され得るGUI要素であり得る。
[0104] ある例示的な実施形態では、選択された要素は、アプリケーションのGUI要素へのポインタ、ウェブページのGUI要素の識別子などを使用するなど、デジタル形式で表され得る。GUIは、モバイルアプリケーション、ウェブアプリケーション、デスクトップソフトウェアなどのようなプログラムの一部であり得る。追加又は代替として、GUIは、以前にプログラムによって提示され、かつ、データベースに保持された画面であり得る。
[0105] 一例として、状況によっては、レンダリングされると、プログラムのGUIはGoogle(登録商標)ホームページであり得る。GUI要素は、ユーザがテキストを入力し得る検索領域であり得る。検索領域は、「div id=searchBox」を検索することによって得られ得る。別の例として、GUIは、ウェブアプリケーションではなく、Google(登録商標)サーチモバイルアプリケーションの画面であり得る。画面は、「andoid:id=「searchBox」」として識別され得る検索ボックスなどのGUI要素を含み得る。
[0106] ある例示的な実施形態では、検索ボックスは、「div id=searchBox」、「テキスト「Googleを検索又はURLを入力」を伴うGUI要素」、「ページ内の7番目のdiv」などの選択されたGUI要素を識別するために使用されることができる代替表現を有し得る。
[0107] ステップ205で、サーバは、複数のクライアントデバイスに表現を提供し得る。ある例示的な実施形態では、サーバは、図1のエージェント115などのクライアントエージェントの各々に表現を送信し得る。追加又は代替として、サーバは、ブロードキャスト、マルチキャスト、ユニキャストなどを使用して表現を提供し得る。追加又は代替として、サーバは、クライアントデバイスにアクセス可能なデータストレージに表現を格納し、それによって、クライアントデバイスがプルモデルで表現を取得することを可能にし得る。サーバによるブロードキャストはまた、表現を個別に送信すること、表現がクライアントデバイスによってアクセスされることができるようにすることなどを含み得ることに留意されたい。
[0108] ステップ210で、クライアントデバイスは表現を得てもよい。表現は、サーバから直接的又は間接的に得られ得る。表現は、ステップ205で表現を提供するサーバの結果として得られ得る。
[0109] ステップ215で、クライアントデバイスは、画面又は別のGUIを得てもよい。画面は、限定されないが、画面の使用の追跡、デジタルウォークスルーの提示、自動化プロセスの実行、自動化テストの実行、画面の視覚的表現の修正、画面上での別のディスプレイレイヤの提示、画面の機能の強化、分析の実行などのアクションを実行する目的で得られ得る。ある例示的な実施形態では、アクションは、画面のGUI要素に関して実行され得る。ある例示的な実施形態では、画面は、図1のエージェント115などのエージェントによって得られ得る。
[0110] ステップ220で、クライアントデバイスは、ステップ215で得られた画面の要素の取得を試行し得る。ある例示的な実施形態では、取得は、ステップ210で得られた表現を適用することによって実行され得る。
[0111] ある例示的な実施形態では、表現は表現セットであり得る。表現セットを適用することは、表現セットによって構成される代替表現の各々を適用することを含み得る。前記代替表現の各々を適用することの結果は、保持され、かつ、互いに比較され得る。
[0112] ある例示的な実施形態では、ある代替表現はGUIコンテキストに関連付けられ得る。一例として、GUIコンテキストは、GUIが得られたOSを記述するプロパティを含み得る。プロパティは、「OS=ANDROID(登録商標)」、「OS=WINDOWS」などであり得る。表現セットを適用することは、GUI要素を一意に識別する目的で、GUIコンテキストに基づいて代替表現のサブセットを選択することと、サブセットのみを適用することと、を含み得る。上の例を再度参照すると、ANDROID(登録商標)スマートフォンではGoogle(登録商標)のホームページが異なって表示され得る。一例として、検索ボックスが、8番目のdiv要素に配置され、かつ、idが「searchBox_android」であり得る。更新されたウェブページに代替表現「div id=searchBox」を適用すると、GUIコンテキストがOS=ANDROIDで構成されている場合、いかなるGUI要素も提供しない場合がある。追加又は代替として、代替表現「ページの7番目のdiv」は、検索ボックスとは異なるGUI要素を提供し得、かつ、GUIコンテキストがOS=ANDROIDで構成されている場合、使用されるべきではない。場合によっては、OS=ANDROIDの場合、「ページの8番目のdiv」、「div id=searchBox_android」などの異なる代替表現が利用可能であり得る。さらに、「「Googleを検索又はURLを入力」というテキストを有するGUI要素」という代替表現は、すべてのオペレーティングシステムに適用可能であり得、かつ、GUIコンテキストのOSタイプのプロパティとは無関係であり得る。結果として、この代替表現は、OS=ANDROID GUIコンテキストとOS=WINDOWS GUIコンテキストとの両方に適用され得る。
[0113] ある例示的な実施形態では、検出モデルは、ステップ200で決定され、ステップ210~215でクライアントデバイスに提供され、かつ、取得プロセスの一部としてステップ220で適用され得る。ある例示的な実施形態では、モデルジェネレータが利用されて検出モデルを生成し得る。ある例示的な実施形態では、検出モデルは、要素の表現に加えて又は代えて利用され得る。
[0114] ステップ230で、取得が成功したか否かが決定され得る。
[0115] ある例示的な実施形態では、取得が成功しなかった場合、クライアントデバイスはサーバにレポートし得る(ステップ240)。ある例示的な実施形態では、レポートは、現在のGUI(例えば、ステップ215で得られた画面)に関する情報、並びに、現在のGUIでの取得の試行が失敗したオリジナルのGUI及びその中の対象の要素に関する情報を含む解決クエリであり得る。ある例示的な実施形態では、レポートは、現在のGUIの候補要素の表示を含み得る。追加又は代替として、レポートは、各潜在的な候補の信頼度を測定する信頼度スコアを示し得る。ある例示的な実施形態では、レポートは、画面、GUIコンテキスト、適用された表現、表現を適用した結果などを含み得る。ある例示的な実施形態では、表現を改善するため、情報がサーバに提供され得る。追加又は代替として、サーバは、機械学習アルゴリズム、品質保証、検出モデルの更新などによって使用されるべき情報を保持し得る。追加又は代替として、レポートは、リポジトリ又はデータストレージを介するなどしてサーバにアクセス可能なオリジナルのGUI、対象のオリジナルの要素などの識別子を示し得る。
[0116] オリジナルのGUIは、オリジナルのGUI要素を含む画面であり得ることに留意されたい。オリジナルの画面は、GUI要素が最初に決定された表現を使用する画面であり得る。ある例示的な実施形態では、オリジナルの画面は、もはや関連性のない歴史上(historic)の画面であり得る。場合によっては、メジャーリリース後、オペレーティングシステムの更新による修正など、オリジナルの画面が別の歴史上の画面に置き換えられ得る。定期的に交換されるなど、経時的にロバスト性を確保するため、オリジナルの画面に代えてオリジナルの画面を置き換える画面が使用され得る。
[0117] 取得が成功した場合、ステップ250が実行され得る。追加又は代替として、表現セットが不確定な結果を提供した場合などの取得が失敗した場合、推定された取得された要素が選択され得、かつ、ステップ250は、例えば、多数決、重み付き選択などの選択基準に基づいて、推定された取得された要素に関して実行され得る。例えば、取得により複数の候補が提供された場合、最も有力な候補が選択され得、その上でアクションが実行され得る。推定された取得された要素に関してクライアントデバイス上でアクションが実行され得、これは、正しいGUI要素であり得る又はない場合があることに留意されたい。アクションは人間の介入なしに実行され得、それは即時ではない場合がある。例えば、人間のユーザが問題を確認し、5分、1時間、24時間、72時間、2週間などの妥当な時間枠内で正しい要素を示し得る。クライアントデバイスは、その目的のために、GUI要素のその場での即時取得を必要とし得る。こうした取得は、すぐに利用可能であり得る推定を使用して実行され得る。これにより、クライアント側で最適でない結果が生じ得るが、これにより、クライアントデバイスが、その意図した機能を実行し、かつ、人間の介入を必要とすることを回避することを可能にし得る、場合によっては、取得が誤ってしまい、結果が正しくなくなる。しかしながら、これは、比較的少数のケースで発生し得、ほとんどの場合、システム全体が適切に機能する。また、特定の取得の問題が解決せずに広まると、サーバは、そのレポートを受信し、特定の傾向、特定の要素、特定の画面などに関するレポートの特定の識別された超過閾値に基づいてアラートを発行し得ることに留意されたい。
[0118] ある例示的な実施形態では、クライアントデバイスによって成功したとみなされる取得の場合でさえ、レポートがサーバに送信され得る(ステップ240)。成功した取得は、成功/失敗の比率、傾向などに関する統計を追跡するためにレポートされ得る。ある例示的な実施形態では、人間のユーザは、成功したとみなされる結果を検証するように求められ得る。
[0119] レポートに基づいて、修正された表現がサーバで決定され得ることに留意されたい。そうした修正された表現は、取得が実行される将来の発生状況で利用され得る。追加又は代替として、修正された検出モデルはレポートに基づいて決定され得る。追加又は代替として、モデルジェネレータは、将来、よりロバストな検出モデルを提供するために更新及び改善され得、それによって、同じ要素又は異なる要素の取得プロセスに影響を与え得る。
[0120] ある例示的な実施形態では、ステップ215~250が繰り返し実行され得る。追加又は代替として、ステップ210~250が繰り返し実行され得る。場合によっては、クライアントデバイスは、ウェブブラウザ及び各閲覧ページを利用し得る。ステップ210~250は、閲覧ページ及びその中の取得が実行される要素に関して実行され得る。
[0121] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図3Aを参照する。
[0122] ステップ300で、解決エントリが得られ得る。解決エントリは、データベース、リポジトリ、データストレージなどから得られ得る。解決エントリは、オリジナルのGUI及びその中のGUI要素を含み得、GUI要素は、解決エントリの対象の要素とみなされる。追加又は代替として、解決エントリは、取得が実行されるべき新しいGUIを含み得る。追加又は代替として、解決エントリは、クライアントデバイスによって実際に取得された要素などの候補GUI要素を含み得る。
[0123] ある例示的な実施形態では、解決エントリは、解決エントリがシステムによって遭遇した回数を示すカウンタを含み得る。ある例示的な実施形態では、カウンタは、その最後の解決以降、最後にエントリがスヌーズされて以降などの発生数を示し得る。追加又は代替として、解決エントリはステータスインジケータを含み得る。ある例示的な実施形態では、エントリのステータスは開いていてもよく、エントリが手動解決を待っていることを示す。追加又は代替として、エントリのステータスがスヌーズされ得、エントリが再び遭遇しない限り、エントリが処理されないことを示す。追加又は代替として、エントリのステータスが無視され得、再び遭遇した場合でも、エントリが処理されないことを示す。
[0124] ある例示的な実施形態では、解決エントリ自体は、候補となる取得された要素を含まない場合がある。代わりに、機械学習モデルを使用して実装されるような分類器が、最適な候補を自動的に識別し得、かつ、そうした候補が利用され得る。
[0125] ステップ310で、単一のディスプレイが使用されて、図1の管理者ユーザ140などのユーザに、解決のためにその中の2つのGUI及び要素を表示し得る。ある例示的な実施形態では、ディスプレイは、ユーザがそれらを比較することを可能にするように両方のGUIを示し得る。各要素は、それぞれのGUIで視覚的に示され得る。ある例示的な実施形態では、GUIは、視覚的に示されている要素を見つけるために(例えば、スクロールバーを使用して)GUIの表示された部分をユーザが修正する必要性を回避するように、それぞれの要素に中心を置かれる方法で提示され得る。そうしたディスプレイの非限定的な例が図6A~図6Bに提示される。
[0126] ステップ320で、ユーザ入力が提供され得る。ユーザは、それが正しいことを示す提案された取得を承諾し得る。追加又は代替として、ユーザは、それが正しくないことを示す提案された取得を拒否し得る。追加又は代替として、ユーザは、解決エントリを無視し、解決せずに同じ問題が再度発生することを回避するようにシステムに命令し得る。追加又は代替として、ユーザは解決エントリをスヌーズして、解決することを回避するが、将来再開されることを可能にし得る。
[0127] ある例示的な実施形態では、ユーザは、解決エントリをスキップして、現時点で解決エントリを解決することを回避し得るが、解決エントリをスヌーズしなくてもよい。問題が再発していなくても、同じ解決エントリが後でユーザ(又は別のユーザ)に提示され得る。ある例示的な実施形態では、「スキップ」オプションは、解決エントリを、処理される解決のキューの最後に移動させ得る。
[0128] ある例示的な実施形態では、提案された解決をユーザが承諾したことに応答して、解決エントリは、正しい解決としてラベル付けされ得る(ステップ330)。ある例示的な実施形態では、同じオリジナルのGUI、対象の要素及び新しいGUIを含むが、新しいGUIの異なる候補要素を有する代替の解決エントリは、自動的に検索され、かつ、正しくないものとしてラベル付けされ得る(ステップ335)。
[0129] ある例示的な実施形態では、提案された解決をユーザが拒否したことに応答して、解決エントリは、正しくないものとしてラベル付けされ得る(ステップ350)。ある例示的な実施形態では、異なる候補要素を有する同じ状況(例えば、同じオリジナルのGUI、同じ対象の要素及び同じ新しいGUI)のための代替の解決エントリが選択され得る(355)。代替の解決エントリが表示され得、かつ、ユーザはそれに応答し得る(310~320)。追加又は代替として、最上位の候補が拒否された場合に2番手の最適な候補、2番目のベースが拒否された場合に3番手の最適な候補などの、別の潜在的な候補を選択するために分類器を採用するなどして、代替の解決が自動的に決定され得る。
[0130] 追加又は代替として、ユーザは、解決エントリを解決せずに「スヌーズ」することを決定する(ステップ340)、又は、解決エントリを解決せずに無視することを決定し得る(ステップ360)。どちらの場合も、次の解決が選択されて表示され得る。ある例示的な実施形態では、解決エントリが無視される場合、同じ状況に対する代替の解決エントリも同様に無視されるように設定され得る。追加又は代替として、解決エントリがスヌーズされる場合、同じ状況に対する代替の解決エントリがスヌーズされ得る。ある例示的な実施形態では、解決エントリは、状況(例えば、オリジナルのGUI、対象の要素及び新しいGUI)及び候補要素のリストを含み得、それによって、同じ状況に対するいくつかの潜在的な解決を集約する。こうした場合、解決エントリ全体に「スヌーズ」及び「無視」が設定され得、かつ、特定の提案された候補には設定され得ず、他方で、各候補に別個に「承諾する」又は「拒否する」が適用され得る。
[0131] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図3Bを参照する。図3Bは、ユーザ入力が使用されて取得プロセスを更新し得ることを示している。明確化のため、図3Bでは、一方で、「承諾する」入力及び「拒否する」入力のみを対処することが示されている。しかしながら、開示された主題はこれらの入力のみに限定されない。
[0132] ステップ390で、取得プロセスが更新され得る。取得プロセスは、それによって利用される表現セットを更新することによって更新され得る。例えば、取得プロセスが、要素を識別するために表現セットを利用する場合、表現セットは更新され得る。最初に複数の代替表現を含む表現セットは、複数の代替表現のサブセットを除外することによって更新され得る。サブセットは、ユーザ入力に適合しない代替表現を含めることによって特徴付けられ得る。一例として、ユーザ入力が、取得プロセスが正しく、かつ、取得されたGUI要素が実際に正しい要素であることを示す「承諾する」である場合、サブセットは、新しいGUIに適用されると、異なる要素を有する(又は要素をまったく有しない)結果となるすべての代替表現を含み得る。結果として、入力に適合しないすべての代替表現、例えば、取得されたGUI要素を有する結果とならないのすべての代替表現は、すべて削除され、かつ、取得プロセスのさらなる用途で使用されなくてもよい。別の例として、ユーザ入力が、取得プロセスが正しくなく、かつ、取得されたGUI要素が正しい要素ではないことを示す「拒否する」である場合、サブセットは、新しいGUIに適用されると、同じ正しくない要素を有する結果となるすべての代替表現を含み得る。結果として、入力に適合しないすべての代替表現、例えば、取得されたGUI要素を有する結果となるすべての代替表現は、削除され、かつ、取得プロセスのさらなる用途で使用されなくてもよい。
[0133] 追加又は代替として、入力は、検出モデル、類似性モデル、モデルジェネレータなどを更新するために使用され得る。ある例示的な実施形態では、ステップ330及び350でラベル付けされるようにラベル付けされた情報が収集されて、関連のモデルを更新し得る。ある例示的な実施形態では、モデルの将来の用途を改善するため、ラベル付けされた情報を使用してモデルが訓練及び更新され得る。一例として、検出モデルが直接更新され得る。更新された検出モデルは分配されて使用され得る。別の例として、モデルジェネレータが、更新され得、かつ、同じターゲット要素又は異なるターゲット要素に対して検出モデルを生成する次の試行において、生成されたモデルが、改善され、かつ、よりロバストになり得る。さらに別の例として、類似性モデルが、更新され、かつ、クライアントに分配され、取得、取得の検証、表現セットを使用して実行される取得の信頼性を決定するためなどに使用され得る。
[0134] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図4を参照する。
[0135] ステップ400で、解決クエリがサーバで取得され得る。解決クエリは、クライアントデバイスから得られ得る。クライアントデバイスは、解決クエリを発行して、現在のGUI、参照GUI(例えば、オリジナルのGUI)及び参照GUIで識別される対象の要素を含む状況を示し得る。ある例示的な実施形態では、解決クエリは、対象の要素に対応し得る候補要素のセットをさらに含み得る。追加又は代替として、各候補は、候補が正しい又は正しくないかについての推定された信頼度を示す信頼度尺度又はスコアが提供され得る。ある例示的な実施形態では、解決クエリは、図2のステップ240などで、クライアントデバイスによって発行されたレポートであり得る。
[0136] ステップ410で、解決リポジトリが検索され得る。サーバは、クエリに一致する解決エントリを検索し得る。そうしたエントリが存在しない場合(420)、新しいエントリが作成されてリポジトリに追加され得る(430)。新しいエントリは、処理のためにキューの最後に追加され得る。追加又は代替として、エントリが存在する場合(420)、エントリが取得され得る。ステップ440で、同じ状況の別の発生を示すためにエントリ内のカウンタが更新され得る。エントリが集約されたエントリである場合、エントリ内の候補は、以前は集約されたエントリに含まれていなかったクエリに現れる候補を含むように更新され得る。ある例示的な実施形態では、例えば、まれな問題に対処する前により頻繁な問題を解決されるようにプッシュするため、更新されたカウンタに基づいて、処理キューのエントリの場所が修正され得る。
[0137] ステップ450で、エントリのステータスがチェックされ得る。エントリが手動で無視されるように設定された場合、エントリは依然として無視される(470)。エントリのステータスが「スヌーズ」に設定される場合、エントリは再び開かれる(460)。ある例示的な実施形態では、再び開かれたエントリは、処理キューに再び追加され得る。再び開かれたエントリは、キューの最後に追加され得る。追加又は代替として、再び開かれたエントリが、エントリの発生カウンタの値に基づいて異なる場所に追加され得る。例えば、キューは、同じ優先度のエントリに先入れ先出し(FIFO)の順序を提供する優先度ベースのキューであり得るが、優先度の高いエントリを優先する。
[0138] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図5Aを参照する。
[0139] ステップ500で、ラベル付きの解決エントリが得られ得る。ラベル付けされた解決エントリは、データベース、データストレージ、リポジトリなどから取得され得る。ラベル付けされた解決エントリは、図3Aに示すように、承諾又は拒否された解決エントリであり得る。追加又は代替として、ラベル付けされた解決エントリは、状況(例えば、オリジナルのGUI、対象の要素及び新しいGUI)、候補要素及びラベルを含み得る。ラベルは、新しいGUIの候補要素がオリジナルのGUIの対象要素に対応するかどうかを示し得る。追加又は代替として、ラベルは、オリジナルのGUIの対象の要素に対応する、新しいGUIの候補要素の信頼度尺度又はスコアを示し得る。「承諾された」解決は100%に設定され得、「拒否された」解決は「0%」に設定され得る。ある例示的な実施形態では、未解決の解決エントリは、取得プロセスから導出される信頼度尺度又はスコアを含み得る。一例として、表現セットが利用される場合、信頼度尺度は、取得のために識別された要素として要素を示した代替表現のパーセンテージに基づき得る。したがって、信頼度尺度は、任意の機械学習モデルの外部にあり得、機械学習モデルの訓練に利用され得る取得が正しいものである可能性に関する指標を提供し得る。
[0140] ステップ510で、訓練データセットは、ラベル付けされた解決に基づいてコンパイルされ得る。ラベル付けされた各解決は、特徴ベクトル及び対応のラベルの評価によって表され得る。ラベル付けされたデータセットが使用されて、機械学習モデルを訓練し、他の状況の予測及びラベル付けを提供し得る。
[0141] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図5Bを参照する。
[0142] ステップ520で、状況及び候補が得られ得る。状況は、オリジナルのGUI、オリジナルのGUIの対象の要素及び新しいGUIを含み得る。候補は、新しいGUIの候補要素であり得る。GUIも、GUIコンテキスト関連情報によって特徴付けられ得ることに留意されたい。ある例示的な実施形態では、状況及び候補は、状況を解決するために表現を適用した、図1の115などのエージェントによって得られ得る。表現は候補を生み出し得る。追加又は代替として、候補は検出モデルを使用して得られ得る。ある例示的な実施形態では、取得が実際に正しいかどうかを決定することが望ましい場合がある。
[0143] ステップ525で、機械学習モデルが使用されて、取得の信頼度尺度が正しいものであることを決定し得る。ステップ520で得られた情報は、機械学習モデルに供給される特徴ベクトルに変換され得る。機械学習モデルは、予測された信頼度尺度を提供し得る。
[0144] ある例示的な実施形態では、ステップ525は、クライアントデバイス自体で実行され得る。機械学習モデルは、サーバで訓練されてクライアントデバイスに分配され得る。追加又は代替として、クライアントデバイスはサーバに情報を送信し、サーバはサーバ側で機械学習モデルを適用し得る。ある例示的な実施形態では、結果はクライアントデバイスにレポートされ得る。
[0145] ある例示的な実施形態では、信頼度尺度が70%、75%、90%などの閾値を下回る場合、取得は不確定であるとみなされ得、かつ、サーバへの解決クエリが発行され得る。ある例示的な実施形態では、解決クエリは、任意の場合に発行され得(例えば、クライアントデバイスは各取得をレポートする)、信頼度尺度が閾値を下回る場合にのみ、図4のステップ410以降が実行される。信頼度尺度が閾値を超えている場合、解決クエリは無視され得、解決エントリは作成されなくてもよい。追加又は代替として、解決クエリは、解決エントリが存在しない場合にのみ無視され得、それによって新しいエントリの作成を回避する(430)が、存在する場合、解決エントリは依然として処理され得る(ステップ440~470)。
[0146] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図5Cを参照する。
[0147] ステップ530で、状況が得られ得る。状況は、オリジナルのGUI、オリジナルのGUIの対象の要素及び新しいGUIを含み得る。GUIも、GUIコンテキスト関連情報によって特徴付けられ得ることに留意されたい。ある例示的な実施形態では、状況は、取得を実行することを必要とする、図1の115などのエージェントによって得られ得る。
[0148] ステップ535で、機械学習モデルが使用されて、新しいGUIの候補要素を決定し得る。追加又は代替として、候補要素の信頼度尺度が決定され得る。ステップ530で得られた情報は、機械学習モデルに供給される特徴ベクトルに変換され得る。機械学習モデルは、予測された候補、その信頼度尺度などを提供し得る。
[0149] ある例示的な実施形態では、ステップ535は、クライアントデバイス自体で実行され得る。機械学習モデルは、クライアントデバイスがローカルで取得を実行することを可能にするため、サーバで訓練されてクライアントデバイスに分配され得る。追加又は代替として、クライアントデバイスはサーバに情報を送信し得、サーバは、サーバ側で機械学習モデルを適用し、かつ、クライアントデバイスに結果を提供し得る。
[0150] ある例示的な実施形態では、信頼度尺度が70%、75%、90%などの閾値を下回る場合、自動取得は不確定であるとみなされ得、かつ、サーバへの解決クエリが発行され得る。ある例示的な実施形態では、解決クエリは、任意の場合に発行され得(例えば、クライアントデバイスは各取得をレポートする)、信頼度尺度が閾値を下回る場合にのみ、図4のステップ410以降が実行される。信頼度尺度が閾値を超えている場合、解決クエリは無視され得、かつ、解決エントリは作成され得ない。追加又は代替として、解決クエリは、解決エントリが存在しない場合にのみ無視され得、それによって、新しいエントリの作成を回避し得る(430)が、存在する場合、解決エントリは依然として処理され得る(ステップ440~470)。
[0151] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図5Dを参照する。
[0152] ステップ540で、オリジナルのGUI及びオリジナルのGUIの要素が得られ得る。
[0153] ステップ545で、モデルジェネレータが利用されて要素及びオリジナルのGUIの検出モデルを生成し得る。検出モデルは、オリジナルのGUI及び検出に利用され得る要素に関連する情報、例えば、それらのプロパティ、要素と他の要素との間の関係などを内部に組み込み得る。
[0154] ステップ550で、新しいGUIが得られ得る。
[0155] ステップ555で、取得プロセスは、新しいGUIに関して実行され得る。取得プロセスは、ステップ540で生成された検出モデルを適用することによって実行され得る。検出モデルは、ステップ540で得られたオリジナルのGUIの要素に対応する新しいGUIの要素であるとモデルによってみなされる新しいGUIの候補を提供し得る。
[0156] ここで、開示された主題のある例示的な実施形態に係るディスプレイの図を示す図6Aを参照する。
[0157] 画面600は、オリジナルのGUI635及び現在のGUI645の2つのGUIを並列に示している。オリジナルのGUI635は、現在のGUI645への参照として機能する。オリジナルのGUI635は、販売ポータルのウェブページであり、かつ、オリジナルのDOM(630)として示されている。オリジナルのGUI635に見られるように、John Doeという名前のユーザがログインし得る。オリジナルのGUI635は、ホーム、チャタ(chatter)、リード、アカウント、連絡先などのカテゴリのメニューを含む。GUI635は、ホームが選択されていることを視覚的に示している。画面600に示されるように、GUI635では、ハイライトを使用する、異なる色を使用するなど、対象の要素(Eol)637が視覚的に示されている。示されているように、Eol637は「アカウント」カテゴリである。ある例示的な実施形態では、Eol637に関する情報は、GUI635の外部などに提示され得る(本図では図示せず)。この情報は、キャプチャされた要素に関する追加データをユーザに提供し得る。例えば、要素がウォークスループロセスの一部である場合、ステップのテキストが表示され得る。ある例示的な実施形態では、これにより、ユーザは要素のコンテキストを理解することができ、画面600に表示された候補の提案を承諾する又は拒否するかを決定することが容易になる。
[0158] 画面600は、新しいGUI、現在のGUI645を示している。現在のGUI645がキャプチャされたタイムスタンプ、URLなど、現在のGUI645に関連するメタデータ情報(640)が提示され得る。候補要素647a、カテゴリ「連絡先」が画面600に視覚的に示されている。
[0159] ディスプレイのサイズの制限により、オリジナルのGUI635及び現在のGUI645の両方がその一部のみを表示するペインに表示されることにも留意されたい。スクロールバーが利用されて、表示のための部分、可視部分とも呼ばれる、を選択し得る。画面600は、Eol637上のオリジナルのGUI635の可視部分を中心に置くように構成され得る。ある例示的な実施形態では、Eol637が、可視であり、かつ、オリジナルのGUI635の可視部分に示されていることが保証される。同様に、画面600は、候補要素647aが現在のGUI645の可視部分に確実に示されるように構成され得る。
[0160] ある例示的な実施形態では、画面600は、図1の管理者ユーザ140などのユーザが、画面によって表示される提案に関連する入力を検討及び提供することを可能にするボタンを含む。ある例示的な実施形態では、承諾ボタン610が利用されて、候補要素647aがEol637に対応することを示す候補を承諾し得る。代替として、ユーザが、2つの要素が対応していないと決定した場合、拒否ボタン612がクリックされ得る。追加又は代替として、ユーザは、スキップボタン614を使用して、現時点で解決を行わずに解決をスキップすることを決定し得る。追加又は代替として、ユーザは取得シナリオを全く無視することを決定し得る。無視ボタン620をクリックすることによって、解決エントリは、無視されたステータスに修正され得る。追加又は代替として、ユーザは、スヌーズボタン622を使用して、エントリが再遭遇されるまで(又は、二度と遭遇されない場合、永久にスヌーズされたままになるまで)エントリをスヌーズすることを選択し得る。
[0161] ユーザがボタン610、612、614、720、622のいずれかをクリックした後、画面600は、異なる取得を表示するように更新され得ることに留意されたい。拒否ボタン612が押された場合、オリジナルのGUI635、Eol637及び新しいGUI645は同じままであり、図6Bに示すように、647bなどの異なる候補が表示され得る。場合によっては、可視部分に異なる候補を含むように可視部分が修正される際、新しいGUI645で異なる候補を示すことに起因して、新しいGUI645の異なる部分が表示され得る。ある例示的な実施形態では、新しいGUI645は、異なる候補の周囲に又は異なる候補に基づいて再び中心に置かれ得る。
[0162] 承諾ボタン610が押された場合、そのような状況に関連する取得が識別及び確認された際、同じ状況(例えば、同じオリジナルのGUI635、Eol637及び新しいGUI645)は再び提示され得ない。
[0163] ある例示的な実施形態では、無視された取得シナリオは、承諾ボタン610がクリックされる場合と同様に、同じ状況が繰り返されない原因となり得る。ある例示的な実施形態では、同じことがスヌーズボタン622及びスキップボタン614に適用可能であり得る。場合によっては、ユーザは、提案された取得を承諾又は拒否したくないので、同じ状況で異なる提案された取得を解決することを回避したい場合もある。これは、同じ状況で単一の解決を有することに起因する。
[0164] 追加又は代替として、画面600は、ポインティングデバイス、タッチスクリーン又は別の入力デバイスを使用してクリックすることなどによって、Eol637に対応する新しいGUI645の要素をユーザが手動で選択することを可能にするように構成され得る。ある例示的な実施形態では、選択は、提案された解決を拒否する代わりに又はその後に実行され得る。
[0165] 図6Bには、異なる候補要素647bが示されている。ここで、候補要素647bが「アカウント」メニューであり、オリジナルの画面635のEol637「アカウント」メニューに対応しているので、取得が正しいように見える。
[0166] ここで、開示された主題のある例示的な実施形態に係る装置を示す図7Aを参照する。
[0167] ある例示的な実施形態では、装置700は、クライアントデバイスにバックエンドサービスを提供するように構成され得る。追加又は代替として、装置700は、マニュアルフィードバックを受信するために人間のユーザに潜在的な取得候補を表示するように構成され得る。追加又は代替として、装置700は、取得を実行する、ロバストな表現を決定する、取得候補を検証するなどの自動化された方法を提供するように構成され得る。
[0168] 追加又は代替として、装置700は、1以上のGUI要素の表現を決定するように構成され得る。追加又は代替として、装置700は、表現、機械学習モデルなどをクライアントデバイスに、複数のクライアントデバイスなどに送信、ブロードキャストなどすることができ得る。
[0169] ある例示的な実施形態では、装置700は1以上のプロセッサ702を含み得る。プロセッサ702は、中央処理装置(CPU)、グラフィック処理装置(GPU)、マイクロプロセッサ、電子回路、集積回路(IC)などであり得る。プロセッサ702は、装置700又はそのサブコンポーネントのいずれかによって必要とされる計算を実行するために利用され得る。
[0170] 開示された主題のある例示的な実施形態では、装置700は、入力/出力(I/O)モジュール704を含み得る。I/Oモジュール704は、例えば、GUI要素の選択の取得、取得候補の表示、取得候補に関するユーザフィードバックの取得などのように、ユーザに出力を提供し、かつ、ユーザから入力を受信するために利用され得る。
[0171] ある例示的な実施形態では、装置700はメモリユニット706を含み得る。メモリユニット706は、ハードディスクドライブ、フラッシュディスク、ランダムアクセスメモリ(RAM)、メモリチップなどであり得る。ある例示的な実施形態では、メモリユニット706は、装置700のサブコンポーネントのいずれかに関連する動作をプロセッサ702に実行させるように動作するプログラムコードを保持し得る。ある例示的な実施形態では、メモリユニット706は、GUI、対象の要素の識別、解決エントリなどを保持し得る。
[0172] メモリユニット706は、実行可能ファイル、ライブラリ、静的ライブラリ、関数又は任意の他の実行可能コンポーネントとして実装される、以下に詳述されるような1以上のコンポーネントを含み得る。
[0173] メモリユニット706は解決クエリハンドラ710を含み得る。解決クエリハンドラ710は、クライアントデバイスから得られた解決クエリを処理するように構成され得る。ある例示的な実施形態では、解決クエリは、オリジナルのGUI及びその中の対象の要素、並びに、取得が望まれる新しいGUIを含み得る。ある例示的な実施形態では、解決クエリは、新しいGUIの1以上の潜在的な候補要素を含み得る。追加又は代替として、各候補は、候補が対象の要素に対応する推定された可能性を示す信頼度尺度を割り当てられ得る。
[0174] ある例示的な実施形態では、解決クエリハンドラ710は、解決エントリデータベース750において、同じ状況に対応する解決エントリを検索するように構成され得る。ある例示的な実施形態では、解決がすでに存在する場合、カウンタが更新され得、そのステータスが更新されてもされなくてもよい、など。ある例示的な実施形態では、そうしたエントリが存在しない場合、新しいエントリが作成されてデータベース750に追加され得る。
[0175] ある例示的な実施形態では、メモリユニット706は解決モジュール720を含み得る。解決モジュール720は、データベース750から解決エントリを検索し、かつ、図1の140などの管理者ユーザに状況を提示するように構成され得る。ユーザは、表示された提案された取得が正しい又は正しくないかを示す自身のフィードバックを提供し得る。追加又は代替として、無視、スキップ、スヌーズ又は他の同様の動作が実行され得る。ある例示的な実施形態では、解決モジュール720は、キュー、優先キューなどに従ってデータベース750からエントリを選択するように構成され得る。ある例示的な実施形態では、解決エントリは、検証のためにユーザに視覚的に示され得る、取得のための候補要素を示し得る。追加又は代替として、候補は、現在のGUIに対象の要素の表現を適用することなどによって、自動的に決定され得る。追加又は代替として、候補は、分類器730を使用して自動的に決定され得る。ある例示的な実施形態では、ユーザが、提案された候補を拒否した場合、次の候補が得られ得る。次の候補は、信頼度尺度に従って、次善の候補であり得る。ある例示的な実施形態では、第1候補は、解決エントリ自体から得られ得る一方で、第1候補が拒否された後に提示される第2候補は、分類器730を使用して自動的に得られ得又はその逆である。ある例示的な実施形態では、第1の信頼度尺度がその後のものより大きい場合、エントリに示された候補に代えて分類器730によって提案された候補を使用するため、表示されるべき第1候補は信頼度尺度に基づいて選択され得る。
[0176] ある例示的な実施形態では、解決モジュール720は、ユーザ入力に基づいて情報にラベルを付け、かつ、それに応じて訓練データセット760を更新し得る。
[0177] ある例示的な実施形態では、メモリユニット706は分類器730を含み得る。分類器730は、機械学習モデルを使用して実装され得る。分類器730は、提案された候補における信頼度尺度を決定し、潜在的な候補を決定し、潜在的な候補及びそれに対応する信頼度尺度を決定するなどするように構成され得る。
[0178] ある例示的な実施形態では、メモリユニット706は、GUIの要素のデジタル表現を決定するように構成された表現決定部740を含み得る。表現は、例えば、表現セットであり得る。ある例示的な実施形態では、表現決定部740は、表現セットで使用されるべきGUI要素の代替表現のセットを生成するように構成され得る。ある例示的な実施形態では、表現決定部740は代替表現のセットを生成し得、そのサブセットが選択されて表現セットで使用され得る。ある例示的な実施形態では、表現決定部740は、歴史的な画面データベースから画面を得て、その上に代替表現のセットを適用し得る。表現決定部740は、表現セットを構築するため、サブセットを含む代替表現の各々を適用し得る。過去に遭遇した様々な画面に代替表現を適用することによって、代替表現のどれがロバストであり、かつ、経時的に正しい結果を返すかが推定され得る。そうした情報を使用して、歴史的な画面データベースからの画面を使用して、正しくて確定的な結果を提供することが証明された代替表現を含めることによって、表現セットが構築され得る。ある例示的な実施形態では、表現決定部740は、クライアントエージェントによって得られるべき表現を決定するように構成され得、そうしたエージェントがGUI要素を取得することを可能にする。ある例示的な実施形態では、表現決定部740は、異なるGUIコンテキストの同じGUI要素の異なる表現を決定するように構成され得る。GUIコンテキストは、画面が取得されたプラットフォームを示し得、ユーザの特徴などを示し得る。一例として、GUIコンテキストは、ウェブサイトがエンドユーザに提示される言語を含み得る。英語バージョンのラベル「END」とフランス語バージョンのラベル「FIN」とで構成されるボタンがあり得る。表現決定部740は、言語ごとに1つずつ、2つの異なる表現を決定し得る。ある例示的な実施形態では、すべての表現は、それによってオンザフライで選択されるすべてのエージェントに分配され得る。追加又は代替として、各エージェントは、それに関連のGUIコンテキストのセットを提供し、関連のGUIコンテキストに一致する表現セットを得うる。
[0179] ここで、開示された主題のある例示的な実施形態に係る装置を示す図7Bを参照する。ある例示的な実施形態では、装置701は、図1のクライアントデバイス110などのクライアントデバイスであり得る。
[0180] ある例示的な実施形態では、装置701は、1以上のプロセッサ702、I/Oモジュール704、メモリユニット706などを含み得る。
[0181] ある例示的な実施形態では、プロセッサ702が利用されて、装置701又はそのサブコンポーネントのいずれかによって必要とされる計算を実行し得る。
[0182] I/Oモジュール704は、図1のサーバ120、図7Aの装置700などの他のコンピュータ化されたデバイスと通信して、解決クエリ、表現を受信し、サーバに不確定な結果を通知し、かつ、それに関連の情報を提供し、各表現セットの使用情報及び成功率などを提供するために利用され得る。
[0183] メモリユニット706は、GUI要素の取得に使用されるべき表現を保持するために利用され得る。
[0184] メモリユニット706は画面取得部750を含み得る。画面取得部750は、プログラムのGUIを得るように構成され得る。一例として、ユーザ(図示せず)は、ウェブベースのアプリケーション、モバイルアプリケーションなどを利用するためなど、自身のニーズのために装置701を使用し得る。ウォークスルー、使用分析、機能拡張などのサービスを提供するため、画面取得部750は、ユーザが使用している現在の画面を得うる。画面は、画面を表すXMLファイルの取得、画面を表すHTMLファイルの取得、画面を表すレイアウトファイルの取得、画面を表すプレイグラウンドオブジェクトの取得、JavaScript(登録商標)ベースのGUIなどのDOMファイルの取得、JavaScriptオブジェクト表記(JSON)ファイルなどのDOMファイルのシリアル化の取得、画面のスクリーンキャプチャ画像の取得などの、GUIのデジタル表現をキャプチャすることによって得られ得る。
[0185] ある例示的な実施形態では、画面取得部750は、画面自体の変形例を取得し得る。場合によっては、DOMファイルなどの画面のデジタル表現は、GUIの所有者が公開したくない機密情報を含み得る。ある例示的な実施形態では、要素のブラックリストが定義され得る。ブラックリストの要素は、デジタル表現から削除され、かつ、ネットワーク上で送信されなくてもよい。追加又は代替として、ブラックリストの要素は、テキストプロパティの削除、要素の別の属性の削除など、それらのプロパティを修正しながら送信され得る。追加又は代替として、ホワイトリストが定義され、どの要素が含められ得るか、そのどのプロパティが含められ得るかを定義し得る。追加又は代替として、デジタル表現はハッシュされ得、又は、それ以外の場合は、復号化されることができない決定論的で一貫性のある表現を提供するなどのために操作され得る。例えば、要素のテキスト及びその他の属性は完全に又は部分的にハッシュされ得る(例えば、最初の3文字はハッシュされないままであり、かつ、残りがハッシュされ得る)。ある例示的な実施形態では、修正されるべき要素及び属性は、ブラックリストに基づいて、ホワイトリストに基づいてなどで決定され得る。
[0186] メモリユニット706はGUI要素取得モジュール755を含み得る。GUI要素取得モジュール755は、GUI要素を取得するように構成され得る。GUI要素は、画面取得部750によって得られたGUI上への表現の適用の用途に基づいて、自動的に取得され得る。ポインタ、識別子、DOMオブジェクトのノードなどを使用して、そのプロパティへのアクセス又はそうしたプロパティの修正を可能にするなど、取得された要素に到達され得る。ある例示的な実施形態では、GUI要素取得モジュール755は、表現取得部760、不確定取得識別子765、不確定取得解決部770などのようなメモリユニット706の他のコンポーネントの実行をトリガし得る。
[0187] GUI要素取得モジュール755は、表現取得部760によって提供される表現を得うる。追加又は代替として、表現を適用した後、GUI要素取得モジュール755は、前記表現を適用することが不確定な結果を提供したかどうかを決定するため、不確定取得識別子765を呼び出すように構成され得る。
[0188] メモリユニット706は表現取得部760を含み得る。表現取得部760は、サーバなどからGUI表現を得るように構成され得る。ある例示的な実施形態では、表現取得部760は、プル通信モデルなどでサーバにクエリを送信することによって、サーバのブロードキャストに基づいて表現を受信し得る。表現取得部760は、事前に表現を得て、その表現をメモリユニット706に格納し得る。追加又は代替として、表現取得部760は、GUI要素の取得を必要とするプロセスが利用可能になったときに、要求に応じて表現を得うる。ある例示的な実施形態では、表現取得部760は、複数の表現を取得し得、それらの各々は、異なるGUI要素を取得するのに有用である。
[0189] メモリユニット706は不確定取得識別子765を含み得る。不確定取得識別子765は、GUI要素を取得しようと試行する場合に不確定な結果を識別するように構成され得る。ある例示的な実施形態では、GUI要素取得モジュール755が表現を適用することに応答して、不確定取得識別子765は、結果が不確定な結果であるか又は確定的な結果であるかを決定し得る。
[0190] メモリユニット706は不確定取得解決部770を含み得る。不確定取得解決部770は、不確定な結果であるにも関わらず要素を取得する目的で、GUI要素の不確定な結果を解決するように構成され得る。ある例示的な実施形態では、不確定取得解決部770は、GUI上への表現の適用によって識別された潜在的な候補のセットからGUI要素を選択するように構成され得る。ある例示的な実施形態では、多数決又は他の定足数の決定が行われて、潜在的な候補の中から選択し得る。追加又は代替として、スコアは、表現セットの各代替表現に関連付けられ、重み付け多数決を使用することを可能にする。ある例示的な実施形態では、各候補は、候補が正しい取得であるという信頼度レベルを示すスコアを含み得る。ある例示的な実施形態では、不確定取得解決部770は、機械学習モデルを適用して、得られた画面;表現の適用などによって提供される潜在的な候補の中などから正しい候補を選択し得る。ある例示的な実施形態では、機械学習モデルは、図7Aの分類器730を採用し得る。ある例示的な実施形態では、分類器730によって利用される予測モデルは、装置701に提供され、かつ、不確定な結果を自動的に解決するように適用され得る。
[0191] メモリユニット706は、サーバ更新部775を含み得る。サーバ更新部775は、図1のサーバ120、図7Aの装置700などのサーバにアップデートを送信するように構成され得る。ある例示的な実施形態では、不確定な取得に応答して、サーバ更新部775は、解決クエリなどの関連情報をサーバに通信し得る。ある例示的な実施形態では、解決クエリは、成功した取得及び失敗した取得のためにサーバ更新部775によって送信され得る。追加又は代替として、閾値を下回る信頼度尺度を有する取得がレポートされ得る。
[0192] 追加又は代替として、追加情報は、サーバ更新部775によってサーバに送信され得る。例えば、表現の用途の使用統計が送信され得る。別の例として、画面取得部750によって得られたGUIは、サーバに送信され、かつ、データベースに保持され得る。
[0193] ここで、開示された主題のある例示的な実施形態に係る方法のフローチャート図を示す図8を参照する。
[0194] ある例示的な実施形態では、GUIが得られ得(ステップ800)、GUI要素が得られ得(ステップ810)、かつ、モデルジェネレータが利用されて他のターゲットGUIの要素の検出モデルを生成し得る(ステップ820)。ステップ830で、取得が実行される第2GUIが得られ得る。検出モデルは、取得プロセス(ステップ840)に利用され得る。ある例示的な実施形態では、例えば、閾値を下回る検出モデルの信頼度尺度に基づいて、又は、(リアルタイムで提供された又は過去に遡って)取得を拒否するユーザ入力に基づいて、取得プロセスが失敗したと決定された場合(ステップ850)、モデルジェネレータが更新され得る(ステップ860)。更新されたモデルジェネレータが利用されて、検出モデルを再生成し(ステップ870)、ステップ820で提供されるモデルよりもロバストな検出モデルを潜在的に提供し得る。ある例示的な実施形態では、更新されたモデルジェネレータは、異なる検出モデルを提供するため、同じGUI又は他のGUIの他の要素に適用され得る。提供される検出モデルは、ステップ860でモデルジェネレータを更新するために使用された追加情報のために改善され得る。
[0195] 本発明は、システム、方法及び/又はコンピュータプログラム製品であり得る。コンピュータプログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令をそこに有するコンピュータ可読記憶媒体(又は複数の媒体)を含み得る。
[0196] コンピュータ可読記憶媒体は、命令実行デバイスによって使用されるために命令を保持及び記憶することができる有形のデバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置又は前述の任意の適切な組み合わせであり得るが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的なリストには:ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能リードオンリメモリ(EPROM又はフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスクリードオンリモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピーディスク(登録商標)、機械的にエンコードされた、命令が記録された溝内のパンチカード又は隆起構造などの装置、及び、前述の任意の適切な組み合わせを含む。本明細書で使用されるコンピュータ可読記憶媒体は、電波又は他の自由に伝播する電磁波、導波管又は他の伝送媒体を通って伝播する電磁波(例えば、光ファイバケーブルを通過する光パルス)又はワイヤを通じて送信される電気信号などの一時的な信号自体であると解釈されるべきではない。
[0197] 本明細書に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体からそれぞれのコンピューティング/処理装置に、又は、ネットワーク、例えば、インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク及び/又はワイヤレスネットワークを介して外部コンピュータ又は外部記憶装置に、ダウンロードされることができる。ネットワークは、銅線伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ及び/又はエッジサーバを備え得る。各コンピューティング/処理デバイスのネットワークアダプタカード又はネットワークインタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、かつ、それぞれのコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するためにコンピュータ可読プログラム命令を転送する。
[0198] 本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、若しくは、Smalltalk、C++などのオブジェクト指向プログラミング言語と、「C」プログラミング言語又は同様のプログラミング言語などの従来の手続き型プログラミング言語と、を含む、1以上のプログラミング言語の任意の組み合わせで記述されたソースコード又はオブジェクトコードのいずれかであり得る。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアロンソフトウェアパッケージとして、部分的にユーザのコンピュータ上で、部分的にリモートコンピュータ上で、若しくは、完全にリモートコンピュータ又はサーバ上で実行され得る。後者のシナリオでは、リモートコンピュータは、ローカルエリアネットワーク(LAN)又はワイドエリアネットワーク(WAN)、若しくは、外部コンピュータへの接続(例えば、インターネットサービスプロバイダを使用したインターネット経由)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続され得る。ある実施形態では、例えば、プログラマブルロジック回路、フィールドプログラマブルゲートアレイ(FPGA)又はプログラマブルロジックアレイ(PLA)を含む電子回路は、本発明の態様を実行するため、コンピュータ可読プログラム命令のスレート情報を利用して電子回路をパーソナライズすることによって、コンピュータ可読プログラム命令を実行し得る。
[0199] 本発明の態様は、本発明の実施形態に係る方法、装置(システム)及びコンピュータプログラム製品のフローチャート図及び/又はブロック図を参照して本明細書に記載される。フローチャート図及び/又はブロック図の各ブロック、並びに、フローチャート図及び/又はブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令によって実施されることができることが理解されよう。
[0200] これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ又は他のプログラム可能なデータ処理装置のプロセッサに提供されて、コンピュータのプロセッサ又は他のプログラム可能なデータ処理装置を介して実行される命令が、フローチャート及び/又はブロック図の1つのブロック又は複数のブロックで特定された機能/行為を実装するための手段を作成するように、機械を製造し得る。これらのコンピュータ可読プログラム命令はまた、コンピュータ、プログラム可能なデータ処理装置及び/又は他のデバイスに特定の方法で機能するように命令することができるコンピュータ可読記憶媒体に記憶され得、その結果、コンピュータ可読記憶媒体は、フローチャート及び/又はブロック図の1つのブロック又は複数のブロックで特定された機能/行為の態様を実装する命令を含む製造品を含む、その中に記憶された命令を有する。
[0201] コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラム可能なデータ処理装置又は他のデバイスにロードされ、コンピュータ、他のプログラム可能な装置又は他のデバイス上で一連の動作ステップを実行させ、コンピュータ実装プロセスを生成し得、その結果、コンピュータ、他のプログラム可能な装置又は他のデバイスで実行される命令が、フローチャート及び/又はブロック図の1つのブロック又は複数のブロックで特定された機能/動作を実装する。
[0202] 図中のフローチャート及びブロック図は、本発明の様々な実施形態に係るシステム、方法及びコンピュータプログラム製品の可能な実装のアーキテクチャ、機能及び動作を示している。これに関して、フローチャート又はブロック図の各ブロックは、モジュール、セグメント又は命令の一部を表し得、これは、特定された論理機能を実装するための1以上の実行可能命令を含む。ある代替の実装では、ブロックに示されている機能は、図に示されている順序とは異なり得る。例えば、連続して示される2つのブロックは、実際には実質的に同時に実行され得る、又は、関連する機能に応じてブロックが逆の順序で実行され得る。ブロック図及び/又はフローチャート図の各ブロック、並びに、ブロック図及び/又はフローチャート図のブロックの組み合わせは、特定された機能又は動作を実行する又は専用ハードウェア及びコンピュータ命令の組み合わせを実行する専用ハードウェアベースのシステムによって実装されることができることにも留意されたい。
[0203] 本明細書で使用される用語は、特定の実施形態を記載することのみを目的としており、かつ、本発明を限定することを意図するものではない。本明細書で使用される場合、単数形「a」、「an」及び「the」は、文脈が明らかに他のことを示さない限り、複数形を含むことも意図している。さらに、「含む」及び/又は「含んでいる」という用語は、本明細書で使用される場合、記載された特徴、完全体、ステップ、動作、要素及び/又は構成要素の存在を特定するが、1以上の他の機能、完全体、ステップ、動作、要素、構成要素及び/又はそれらのグループの存在又は追加を排除するものではないことが理解される。
[0204] 以下の特許請求の範囲におけるすべての手段又はステッププラスファンクション要素の対応の構造、材料、行為及び同等物は、具体的に請求された他の請求された要素と組み合わせて機能を実行するための任意の構造、材料又は行為を含むことを意図する。本発明の記載は、例示及び説明の目的で提示されたが、網羅的であること又は開示された形態に本発明を限定することを意図するものではない。多くの修正及び変形が、本発明の範囲及び精神から逸脱することなく、当業者には明らかである。本発明の原理及び実際の用途を最もよく説明し、企図される特定の使用に適した様々な修正を伴う様々な実施形態について当業者が本発明を理解することができるようにするために、実施形態が選択及び説明された。