Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
UiPath-モダン/クラシックアクティビティ相互利用について
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yoichi
November 02, 2022
Programming
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
UiPath-モダン/クラシックアクティビティ相互利用について
UiPath Friends Festival 2022 テック三昧にて
Yoichi
November 02, 2022
More Decks by Yoichi
See All by Yoichi
UiPath Windowsレガシー→Windowsプロジェクト変換について
swetake
0
1.5k
Other Decks in Programming
See All in Programming
ジョジョの世界をXRで再現する
mofurune
0
170
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
400
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
850
[JA] Domain Modeling with Vanilla Rails: 「操作」から再考するRailsの設計論
yasaichi
3
450
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
510
Agents on Rails - Rails at Scale 2026
irinanazarova
0
570
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5.2k
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
sbt 2.0: takeoff
eed3si9n
0
160
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
Featured
See All Featured
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
580
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
Designing for Timeless Needs
cassininazir
1
530
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
410
Claude Code のすすめ
schroneko
67
230k
Git: the NoSQL Database
bkeepers
PRO
433
67k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
8.1k
Raft: Consensus for Rubyists
vanstee
142
7.8k
Accessibility Awareness
sabderemane
1
250
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
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を使う。 以上、みなさんのモダン・クラシックの相互利用時の参考になればと思います。 まとめ