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
240
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.1k
Other Decks in Programming
See All in Programming
Railsアプリケーションと パフォーマンスチューニング ー 秒間5万リクエストの モバイルオーダーシステムを支える事例 ー Rubyセミナー 大阪
falcon8823
5
1.1k
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
2
140
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
140
『自分のデータだけ見せたい!』を叶える──Laravel × Casbin で複雑権限をスッキリ解きほぐす 25 分
akitotsukahara
2
620
Code as Context 〜 1にコードで 2にリンタ 34がなくて 5にルール? 〜
yodakeisuke
0
120
CursorはMCPを使った方が良いぞ
taigakono
1
240
PHP 8.4の新機能「プロパティフック」から学ぶオブジェクト指向設計とリスコフの置換原則
kentaroutakeda
2
750
スタートアップの急成長を支えるプラットフォームエンジニアリングと組織戦略
sutochin26
0
4.3k
ニーリーにおけるプロダクトエンジニア
nealle
0
780
A full stack side project webapp all in Kotlin (KotlinConf 2025)
dankim
0
100
WindowInsetsだってテストしたい
ryunen344
1
240
GraphRAGの仕組みまるわかり
tosuri13
8
530
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
694
190k
We Have a Design System, Now What?
morganepeng
53
7.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Embracing the Ebb and Flow
colly
86
4.7k
Music & Morning Musume
bryan
46
6.6k
How to train your dragon (web standard)
notwaldorf
94
6.1k
Optimizing for Happiness
mojombo
379
70k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
A Tale of Four Properties
chriscoyier
160
23k
The Cost Of JavaScript in 2023
addyosmani
51
8.5k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.3k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
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を使う。 以上、みなさんのモダン・クラシックの相互利用時の参考になればと思います。 まとめ