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
280
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.3k
Other Decks in Programming
See All in Programming
PostgreSQLで手軽にDuckDBを使う!DuckDB&pg_duckdb入門/osc25hi-duckdb
takahashiikki
0
240
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.3k
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
180
【卒業研究】会話ログ分析によるユーザーごとの関心に応じた話題提案手法
momok47
0
160
愛される翻訳の秘訣
kishikawakatsumi
3
370
Python札幌 LT資料
t3tra
7
1.1k
今こそ知るべき耐量子計算機暗号(PQC)入門 / PQC: What You Need to Know Now
mackey0225
3
200
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
120
[AI Engineering Summit Tokyo 2025] LLMは計画業務のゲームチェンジャーか? 最適化業務における活⽤の可能性と限界
terryu16
2
260
AIで開発はどれくらい加速したのか?AIエージェントによるコード生成を、現場の評価と研究開発の評価の両面からdeep diveしてみる
daisuketakeda
1
560
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
1
1k
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
240
Featured
See All Featured
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Context Engineering - Making Every Token Count
addyosmani
9
590
Measuring & Analyzing Core Web Vitals
bluesmoon
9
730
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.3k
A better future with KSS
kneath
240
18k
Mind Mapping
helmedeiros
PRO
0
47
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.2k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
79
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
54
49k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Fireside Chat
paigeccino
41
3.8k
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を使う。 以上、みなさんのモダン・クラシックの相互利用時の参考になればと思います。 まとめ