アプリ(電卓)から値の取得不可


#1

UiPath初心者です。
とても簡単なロボットを作成してます。
電卓で1+5=6と計算し、6という結果をcopy textで取得し、message boxに表示するというものですが、message boxにcopy textで取得しているはずの値(6)が返ってきてません。
おそらくselectorが問題だと思うのですが、原因をお教えいただきたく投稿しました。

参考:selectorの内容


#2

@Eriko_Tanaka さんこんにちは
Copy Selected Textでしょうか?セレクターはないと思います。
ためしにGet Textでセレクターを数字を表示しているところにしたらうまく動きました。



#3

Copy Selected Textではなく、Copy Textです。
Recordingを使用して、Basic -> Copy -> Copy Textを使いました。
Recordingされた内容をFlowchart横にあるプロパティで確認すると、UiPath.Core.Activities.GetValueを使用しています。


#4

状況わかりました。Get Textアクティビティが正しい名称なのですがRecordingのバーからだとプルダウンでCopy Textという表示になっておりました。
それで本題ですが計算結果がSelectorに含まれるようなので、添付のように計算結果をSelectorから外してみてください。


#5

一番最後の「表示は6です」のチェックを外してみましたが、結果は同じ(値が返ってこない)です。
Windows10を使用しておりますが、その場合、うまく値が取得できないケースがあることを英語版のフォーラムで見ました。電卓を使用しているのに、calc.exeがAttributesの中に出ていないのが気になってます。


#6

こんにちは

Win10のストアアプリということで、Get Text Activityではうまく取れないみたいですね。

ワークアラウンドとして
1.name属性の文字列から結果をとってくる(Get Attribute Activity + 文字列操作)
2.Ctrl+c で結果をクリップボードに移してから、それをとってくる。(Send Hotkey Activity + Get from Clipboard Activity)
あたりでしょうか。

サンプル以下つけておきます。
数字としてハンドリングしたいのであれば2のほうが良いかもしれません。(1の場合桁区切りのカンマなどが入ってくる可能性があります。)

GetStoreCalcResultSample1.xaml (6.1 KB)

GetStoreCalcResultSample2.xaml (5.8 KB)


#7

こんにちは。ワークアラウンドのご提示ありがとうございます。

2の方でシナリオに組み込みましたが、エラーがでました。
2の方法ですと、取得した結果をMessage Boxに表示できないのでしょうか。
原因をお教えください。

=======================================================
Main has thrown an exception

Source: Message box

Message: Object reference not set to an instance of an object. This error usually occurs when using a variable with no set value (not initialized).

Exception Type: NullReferenceException

System.NullReferenceException: Object reference not set to an instance of an object.
at lambda_method(Closure , ActivityContext )
at Microsoft.VisualBasic.Activities.VisualBasicValue1.Execute(CodeActivityContext context) at System.Activities.CodeActivity1.InternalExecuteInResolutionContext(CodeActivityContext context)
at System.Activities.Runtime.ActivityExecutor.ExecuteInResolutionContext[T](ActivityInstance parentInstance, Activity1 expressionActivity) at System.Activities.InArgument1.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance activityInstance, ActivityExecutor executor)
at System.Activities.RuntimeArgument.TryPopulateValue(LocationEnvironment targetEnvironment, ActivityInstance targetActivityInstance, ActivityExecutor executor, Object argumentValueOverride, Location resultLocation, Boolean skipFastPath)
at System.Activities.ActivityInstance.InternalTryPopulateArgumentValueOrScheduleExpression(RuntimeArgument argument, Int32 nextArgumentIndex, ActivityExecutor executor, IDictionary2 argumentValueOverrides, Location resultLocation, Boolean isDynamicUpdate) at System.Activities.ActivityInstance.ResolveArguments(ActivityExecutor executor, IDictionary2 argumentValueOverrides, Location resultLocation, Int32 startIndex)
at System.Activities.Runtime.ActivityExecutor.ExecuteActivityWorkItem.ExecuteBody(ActivityExecutor executor, BookmarkManager bookmarkManager, Location resultLocation)


#8

こんにちは

MessageBox の問題ではなく ctrl +cで値が取得できていないのではと思います。
2の前提として電卓アプリ上でctrl +c をしたときに値がクリップボードにコピーできることが前提となります。
まずはこれを確認いただけますでしょうか?(電卓で計算して結果を出した後に ctrl+c 後、メモ帳などで貼り付けて値を確認)

上記問題なければSend Hotkey のSelctorの問題かもしれませんので、以下でSelectorを取り直してみてください。(Indicate on Screenをクリックして電卓アプリ全体を選択してクリック)
IndicateOnScreen

一応電卓アプリ全体に対して ctrl+c するサンプルをつけておきます。
(こちらの環境では前回の2、今回のサンプルとも正常に動作しています)
GetStoreCalcResultSample3.xaml (5.8 KB)

ctrl+c でうまく値が取れないときは、その原因を探るか、サンプル1の方法を検討するかになるかと思います。


#9

ご連絡が遅くなり、申し訳ございません。

電卓アプリ上でctrl +c をしたとき、値はクリップボードにコピーできました。
その上で、Indicate on Screenをクリックして電卓アプリ全体を選択してクリックするように修正したところ、実行できました。

先日のエラーの原因は、Get from clipboardで、出力する値(変数)を設定しておりませんでした。
そのため、元々アドバイスいただいていた値のみを選択した場合でも試したところ、実行できるようになりました。

ご迷惑おかけいたしました。ありがとうございます。