Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
UiPath-モダン/クラシックアクティビティ相互利用について
Search
Yoichi
November 02, 2022
Programming
0
250
UiPath-モダン/クラシックアクティビティ相互利用について
UiPath Friends Festival 2022 テック三昧にて
Yoichi
November 02, 2022
Tweet
Share
More Decks by Yoichi
See All by Yoichi
UiPath Windowsレガシー→Windowsプロジェクト変換について
swetake
0
1.2k
Other Decks in Programming
See All in Programming
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
3
320
Prompt Engineeringの再定義「Context Engineering」とは
htsuruo
0
110
商品比較サービス「マイベスト」における パーソナライズレコメンドの第一歩
ucchiii43
0
240
AI Agent 時代のソフトウェア開発を支える AWS Cloud Development Kit (CDK)
konokenj
6
1k
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
890
MCP連携で加速するAI駆動開発/mcp integration accelerates ai-driven-development
bpstudy
0
220
TypeScriptでDXを上げろ! Hono編
yusukebe
4
900
Amazon Q CLI開発で学んだAIコーディングツールの使い方
licux
3
140
Dart 参戦!!静的型付き言語界の隠れた実力者
kno3a87
0
100
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
4
2.2k
Understanding Kotlin Multiplatform
l2hyunwoo
0
250
Comparing decimals in Swift Testing
417_72ki
0
150
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
400
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
Practical Orchestrator
shlominoach
190
11k
How to train your dragon (web standard)
notwaldorf
96
6.1k
GraphQLとの向き合い方2022年版
quramy
49
14k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.5k
BBQ
matthewcrist
89
9.8k
Code Review Best Practice
trishagee
69
19k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Transcript
モダン/クラシック アクティビティ 相互利用について Yoichi Suetake
2 #UiPathFriends #UiFes 自己紹介 名前: 末武 陽一(すえたけ よういち)(Suetake, Yoichi) Twitter : @SuetakeYoichi LinkedIn
: yoichi-suetake-144784aa 所属: 株式会社オプテージ RPAソリューションチーム チームマネージャー 属性: IT屋(技術士(総合技術監理・情報工学部門)) 天文屋 気象屋(気象予報士) UiPath使用歴: 約5年 (Academy Lv1修了2017/5/24) UiPath Japan MVP 2019-2022 UiPath Community MVP 2022 (Global)
3 #UiPathFriends #UiFes ・21.10よりモダンデザインエクスペリエンスがデフォルトで有効となり、モダンデザインを標準 としている組織も多いかと思います。 ・一方で、クラシックデザインで作成したライブラリや共用ファイル等の資産がある場合、モダン デザインとクラシックデザインを併用せざる得ないケースもしばらくはあるかと思います。 ・このセッションでは、上記のようなケースで想定される相互利用方法について技術的な観点で見 ていきます。 セッションの概要
4 #UiPathFriends #UiFes モダンアクティビティとクラシックアクティビティ UiAutomationクラシック 個々のアクティビティはフルセレクターを指定 して単独で利用するか、上記アクティビティの コンテナ内で部分セレクターを指定して利用 する。 同一ブラウザやウインドウを担保するため
に、UiPath.Core.Windowや UiPath.Core.Browserを使う。 個々のアクティビティはフルセレクターを指定 して単独で利用するか、上記アクティビティの コンテナ内で部分セレクターを指定して利用 する。 同一ブラウザやウインドウを担保するため に、UiPath.Core.Windowや UiPath.Core.Browserを使う。
5 #UiPathFriends #UiFes モダンアクティビティとクラシックアクティビティ UiAutomationモダン 個々のアクティビティは原則として「アプリケー ション/ブラウザを使用」アクティビティの内部で使 用する。 同一ウインドウまたはプロセス配下であることを 担保するために、UiPath.Core.UiElement
を使う。 個々のアクティビティは原則として「アプリケー ション/ブラウザを使用」アクティビティの内部で使 用する。 同一ウインドウまたはプロセス配下であることを 担保するために、UiPath.Core.UiElement を使う。 このあたりの差異をどのように吸収するか?
6 #UiPathFriends #UiFes ライブラリやXAMLファイル自体の引数の入力がUiPath.Core.Browserの場合にどうするか? ケース1:モダンプロジェクトから UiPath.Core.Browserインスタンスを渡したい。
7 #UiPathFriends #UiFes ケース1:モダンプロジェクトから UiPath.Core.Browserインスタンスを渡したい。 アプリケーション/ブラウザを使用アクティビティ UiElement.GetBrowser()を使う。 ※状況により、事前にUiElement.IsBrowserプロパティで Browserを取得できるか確認すると吉 UiElement.GetBrowser()を使う。
※状況により、事前にUiElement.IsBrowserプロパティで Browserを取得できるか確認すると吉
8 #UiPathFriends #UiFes ケース2:モダンプロジェクトで UiPath.Core.Browserインスタンスを使う。 ライブラリや呼び出し先XAMLファイルからUiPath.Core.Browserが返ってきた場合にどうするか?
9 #UiPathFriends #UiFes ケース2:モダンプロジェクトで UiPath.Core.Browserインスタンスを使う。 「アプリケーション/ブラウザを使用」アクティビティの入力要素プロパ ティでBrowser.Elementプロパティを使う 「アプリケーション/ブラウザを使用」アクティビティの入力要素プロパ ティでBrowser.Elementプロパティを使う
10 #UiPathFriends #UiFes (実は)UiPath.Core.BrowserとUiPath.Core.UiElementは相互に暗黙の変換が可能なので 前述したメソッドやプロパティは省略可能 暗黙の変換 vatUiElement.GetBrowser()と同じ vatUiElement.GetBrowser()と同じ
11 #UiPathFriends #UiFes varWindow = varUiElement.GetTopLevelWindow() varUiElement = New UiElement(varWindow)
を使う。 暗黙変換可能なので、メソッドやコンストラクタは省略可能。 ケース3:Windowインスタンスを...
12 #UiPathFriends #UiFes 設定ファイルにフルセレクター文字列が格納されており、それをUiAutomationのアクティビティ で使う。 例: モダンのUiAutomationアクティビティは原則「アプリケーション/ブラウザを使用」アクティビ ティ配下で使うので、フルセレクター文字列をそのまま入力してもアクティビティ単独では動作し ない。 ケース4:フルセレクター文字列を
モダンプロジェクトで使う。 <html app='firefox.exe' title='UiPath Community Forum' /><webctrl tag='IMG' />
13 #UiPathFriends #UiFes 「アプリケーション/ブラウザを使用アクティビティ」の 統合アプリケーションターゲット-セレクタープロパティに トップレベルセレクターのみを指定→例えば正規表現で抽出 System.Text.RegularExpressions.Regex.Match(in_selector,".*?>").Value 内部のアクティビティは、「アプリケーション/ブラウザ を使用」アクティビティのウインドウアタッチモードに よって指定するセレクターを変える。
ケース4:フルセレクター文字列を モダンプロジェクトで使う。 「アプリケーション/ブラウザを使用」アクティビティの ウインドウアタッチモード 内部のアクティビティのセレクターで指定する内容 アプリケーションインスタンス フルセレクター(またはウインドウセレクター要素にトップレベル、セレクター に部分セレクター) 単一ウインドウ トップレベルを省いた部分セレクター
14 #UiPathFriends #UiFes モダンアクティビティとクラシックアクティビティ クラシック モダン EXCEL ・同一ワークブックを担保す るために UiPath.Excel.Workboo
kApplicationを使う。 ・同一ワークブックを担保す るために UiPath.Excel.Workboo kApplicationを使う。 ・ワークブックのファイル名(フルパス)にて同 一ワークブックを担保。(そもそもエクセルは 同じ名前のワークブックは同時に開くことがで きない) ・Excelアプリケーションスコープ内で使用でき るアクティビティは、「Excelファイルを使用」内 でも使用できる。 ・ワークブックのファイル名(フルパス)にて同 一ワークブックを担保。(そもそもエクセルは 同じ名前のワークブックは同時に開くことがで きない) ・Excelアプリケーションスコープ内で使用でき るアクティビティは、「Excelファイルを使用」内 でも使用できる。
15 #UiPathFriends #UiFes ケース5 モダンプロジェクトで WorkbookApplicationインスタンスを使う。 ライブラリや呼び出し先XAMLファイルからWorkbookApplicationが返ってきた場合にどうするか?
16 #UiPathFriends #UiFes WorkbookApplication.CurrentWorkbook.FullNameでワークブックのフルパスを抽出して渡す。 ケース5 モダンプロジェクトで WorkbookApplicationインスタンスを使う。
17 #UiPathFriends #UiFes あまりスマートな方法がなく…. WorkbookApplicationコンストラクタで生成。 Excelアプリケーションスコープアクティビティを使う。 ケース6 モダンプロジェクトから WorkbookApplicationインスタンスを渡したい
18 #UiPathFriends #UiFes ・UiPath.Core.Browser または UiPath.Core.Windowと、UiPath.Core.UiElementは相互変換が 可能(しかも暗黙での変換も可能)。 →モダンの「アプリケーション/ブラウザを使用」アクティビティで クラシックのアクティビ ティが必要な型の受け渡し、あるいはクラシックアクティビティからの出力の利用が可能。 ・フルセレクター文字列をモダンで扱う場合は、トップレベルのセレクター文字列を抽出して、
「アプリケーション・ブラウザを使用」アクティビティに入力する。内部のアクティビティのセ レクター指定はウインドウアタッチモードによってフルセレクター、部分セレクターを使い分け る。 ・WorkbookApplicationインスタンスを受け取ったら、ファイルパスを抽出して、それをExcel ファイルを使用アクティビティに与える。その逆の、モダンアクティビティだけで WorkbookApplicationインスタンスを生成することは難しいので、WorkbookApplicationコン ストラクタで生成するか、素直にExcelApplicationScopeを使う。 以上、みなさんのモダン・クラシックの相互利用時の参考になればと思います。 まとめ