studio
2024.10
true
- リリース ノート
- 基本情報
- セットアップと構成
- オートメーション プロジェクト
- 依存関係
- ワークフローの種類
- 制御フロー
- ファイルの比較
- オートメーションのベスト プラクティス
- ソース管理との連携
- デバッグ
- ログ
- 診断ツール
- ワークフロー アナライザー
- ワークフロー アナライザーについて
- ST-DBP-002 - 多数の引数
- ST-DBP-003 - 空の catch ブロック
- ST-DBP-007 - 複数のフローチャートレイヤー
- ST-DPB-010 - [ワークフロー] または [テスト ケース] の複数のインスタンス
- ST-DBP-020 - 未定義の出力プロパティ
- ST-DBP-021 - ハードコードされたタイムアウト
- ST-DBP-023 - 空のワークフロー
- ST-DBP-024 - 永続性アクティビティの確認
- ST-DBP-025 - 変数のシリアル化の前提条件
- ST-DBP-026 - [待機] アクティビティの使用
- ST-DBP-027 - Persistence のベスト プラクティス
- ST-DBP-028 - 引数のシリアル化の前提条件
- 変数
- 引数
- インポートされた名前空間
- コード化されたオートメーション
- トリガーベースの有人オートメーション
- レコーディング
- UI 要素
- セレクター
- オブジェクト リポジトリ
- データ スクレイピング
- 画像とテキストの自動化
- Citrix テクノロジの自動化
- RDP の自動化
- VMware Horizon の自動化
- Salesforce の操作の自動化
- SAP のオートメーション
- macOS の UI Automation
- ScreenScrapeJavaSupport ツール
- Webdriver プロトコル
- 拡張機能
- Test Suite - Studio
- トラブルシューティング
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。
Studio ガイド
Last updated 2024年11月4日
インポートしたライブラリ プロジェクトをコード化されたオートメーションで使用する
このチュートリアルでは、インポートしたライブラリ プロジェクトから取得したオブジェクトをコード化されたオートメーション内で使用する方法について説明します。この例では、インポートしたライブラリ プロジェクトから取得したオブジェクト リポジトリの要素とワークフローを使用する方法を示します。指定のシナリオでは、ACME Web サイトを自動化して、学生のスコア カードに必要事項を入力し、それをデータベースに追加します。
ACME アプリの自動化 (厳密には学生のスコア カードへの入力) に不可欠な UI 要素を格納するライブラリ プロジェクトを作成します。さらに、ライブラリ プロジェクト内にローコード (
.xaml
) またはコード化されたワークフロー (.cs
) を作成します。これは、後で別のコード化されたオートメーション内で使用するものです。
AcmeLibrary
という名前のライブラリ プロジェクトを作成します。- [オブジェクト リポジトリ] と [記述子] セクション内で使用する、すべての UI 要素をキャプチャします。
- [ファイル] グループから、新しいコード化されたワークフローを作成します。
この手順は、別のプロジェクトにライブラリをインポートするときに、コード化されたオートメーション内のオブジェクト リポジトリにアクセスできるようにするために重要です。
- Main ローコード ワークフローの名前を
Send message box
に変更し、[メッセージ ボックス] アクティビティを、「You've added a new score card for a student in Acme. (ACME の学生用に新しいスコア カードを追加しました。)」というテキストと共に追加します。注: チュートリアルで説明されている手順に従って、[メッセージ ボックス] アクティビティをコード化されたワークフローとして再作成することもできます。 - ライブラリ プロジェクトを保存し、フィードにパブリッシュします。
このパブリッシュされたライブラリは、コード化されたオートメーション内の別のプロジェクトにインストールして使用します。
ライブラリ プロジェクトの作成後、それを別のプロジェクトにインストールして、その再利用可能なアセット (オブジェクト リポジトリの要素やワークフローなど) を、それらがローコード (
.xaml
) かコード化 (.cs
) かにかかわらず活用します。
ヒント: UI Automation API を使用する場合、
IScreenDescriptor
または IElementDescriptor
を含むオーバーロードはオブジェクト リポジトリの要素を操作するためのものであるのに対し、TargetAnchorableModel
を含むオーバーロードは UI Explorer で取得されたネイティブ セレクターで使用するためのものであることに注意してください。UI Automation API でセレクターを活用する方法について詳しくは、UI Automation API をご覧ください。
- [ファイル] グループから、新しいコード化されたワークフローを作成します。
- [パッケージを管理] に移動し、以前に作成したライブラリ プロジェクトをインストールします。
- [ファイル] グループから、新しいワークフローを作成します。
- ワークフローに
notifyStudentScoreCardAdded
という名前を付けます。 - [アクティビティ] パネル、[インストール済み] セクションの順に移動します。
- インポートしたライブラリ プロジェクトの名前 (この例では
AcmeLibrary
) を検索します。 Send message box
アクティビティをnotifyStudentScoreCardAdded
内にドラッグ アンド ドロップします。これで、notifyStudentScoreCardAdded
の動作は、インポートしたライブラリ プロジェクトから取得したSend message box
ワークフローと同じになります。
- ワークフローに
- 読みやすくするために、インポートしたオブジェクト リポジトリ アプリケーションを変数として定義し、ワークフローの先頭に
using
ステートメントを適用できます。以下に例を示します。using app = <ProjectName>.ObjectRepository.Descriptors.<AppName>
この方法では、app.<ScreenName>.<UiElementName>
形式で記述子を簡単に呼び出すことができます。この例では、ACME オブジェクト リポジトリを次のように定義します。namespace UsingImportedLibraryProjects { using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors.Acme;
namespace UsingImportedLibraryProjects { using AcmeApp = AcmeLibrary.ObjectRepository.Descriptors.Acme; - これで、ACME 内で指定のシナリオを自動化できるようになりました。最初に、OpenAPI を使用して ACME のログイン画面を開きます。
[Workflow] public void Execute() { // 1.Open the Acme app on the Login screen var AcmeLoginScreen = uiAutomation.Open(AcmeApp.LoginScreen);
[Workflow] public void Execute() { // 1.Open the Acme app on the Login screen var AcmeLoginScreen = uiAutomation.Open(AcmeApp.LoginScreen); - TypeInto API を使用して、ACME にログインするために必要な資格情報を入力します。
// 2.Type in the necessary credentials AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Email, "john.doe2023@uipath.com"); AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Password, "12345678");
// 2.Type in the necessary credentials AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Email, "john.doe2023@uipath.com"); AcmeLoginScreen.TypeInto(AcmeApp.LoginScreen.Password, "12345678"); - Click API とネイティブ セレクターを使用して、[Login] ボタンをクリックします。
// 3.Use a native selector to click the Login button AcmeLoginScreen.Click(Target.FromSelector("<webctrl tag='BUTTON' type='submit'/>"));
// 3.Use a native selector to click the Login button AcmeLoginScreen.Click(Target.FromSelector("<webctrl tag='BUTTON' type='submit'/>")); - ログイン プロセスが実行されると、ACME Web アプリケーションの [Dashboard] 画面が表示されます。そのため、Attach API を使用して新しい画面にフォーカスします。
// 4. Focus on the Dashboard screen var DashboardScreen = uiAutomation.Attach(AcmeApp.Dashboard);
// 4. Focus on the Dashboard screen var DashboardScreen = uiAutomation.Attach(AcmeApp.Dashboard); - Click API を使用して、Web サイトで [Students] エントリを選択します。
// 5. Click the Students entry DashboardScreen.Click(AcmeApp.Dashboard.Students);
// 5. Click the Students entry DashboardScreen.Click(AcmeApp.Dashboard.Students); - Click API を使用して、[Score card] を選択し、[Students - Score Card] フォームを開きます。
// 6. Click Score card, to start filling in a student score card DashboardScreen.Click(AcmeApp.Dashboard.Students.ScoreCard);
// 6. Click Score card, to start filling in a student score card DashboardScreen.Click(AcmeApp.Dashboard.Students.ScoreCard); - Attach API を使用して、[Students - Score Card] 画面にフォーカスします。
// 7. Focus on the Score Card screen where you fill in the necessary information var ScoreCardScreen = uiAutomation.Attach(AcmeApp.StudentsScoreCard);
// 7. Focus on the Score Card screen where you fill in the necessary information var ScoreCardScreen = uiAutomation.Attach(AcmeApp.StudentsScoreCard); - TypeInto API を使用して、[Students - Score Card] フォームのフィールドの半分と、オブジェクト リポジトリから取得した要素に入力します。
ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.FirstName, "John"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.LastName, "Doe"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.Tuition, "Private");
ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.StudentEmail, "john.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.FirstName, "John"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.LastName, "Doe"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.ParentEmail, "johnny.doe@uipath.com"); ScoreCardScreen.TypeInto(AcmeApp.StudentsScoreCard.Tuition, "Private"); - TypeInto API と、UI Explorer で見つけたネイティブ セレクターを組み合わせて使用し、フォームの残りのフィールドに入力します。
ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='mathematics' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='physics' tag='INPUT' />"), "B"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='biology' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='chemistry' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='geography' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='history' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='english' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='computer Science' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='professorComments' tag='INPUT' />"), "The student is doing okay, very hardworking and does its best");
ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='mathematics' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='physics' tag='INPUT' />"), "B"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='biology' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='chemistry' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='geography' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='history' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='english' tag='INPUT' />"), "A"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='computer Science' tag='INPUT' />"), "C"); ScoreCardScreen.TypeInto(Target.FromSelector("<webctrl id='professorComments' tag='INPUT' />"), "The student is doing okay, very hardworking and does its best"); - Click API を使用して、[Add score card details] を選択します。
// 10. Click the "Add score card details" button using an Object Repository descriptor ScoreCardScreen.Click(AcmeApp.StudentsScoreCard.AddScoreCardDetailsButton);
// 10. Click the "Add score card details" button using an Object Repository descriptor ScoreCardScreen.Click(AcmeApp.StudentsScoreCard.AddScoreCardDetailsButton); RunWorkflow()
メソッドを使用して、ライブラリ プロジェクトからインポートしたワークフローを呼び出します。このメソッドにプロジェクト内のワークフローのパスを指定します。// 11. Invoke imported workflow from library RunWorkflow("notifyStudentScoreCardAdded.xaml");
// 11. Invoke imported workflow from library RunWorkflow("notifyStudentScoreCardAdded.xaml");Dispose()
API を使用して、シナリオを自動化するために開いたブラウザー タブを閉じます。// 12. Close the applications/browsers you opened, to finish he automation ScoreCardScreen.Dispose();
// 12. Close the applications/browsers you opened, to finish he automation ScoreCardScreen.Dispose();
To follow the steps and try out the tutorial yourself, see the following sample project: Using imported library projects in coded automations. The file contains the library project, as well.