Hresult e_failがcomコンポーネントの呼び出しから返されました

GetAttribute(属性を取得)アクティビティで"HRESULT~“のエラーが発生します(正しくは発生する時としない時の両方)
システムは社内イントラWebフォームより商品番号を入力後、検索ボタンを押します。
下記がRPA手順です。
a)検索ボタンクリック

b)ダウンロードボタンの属性取得

c)検索ボタンの属性取得

d)2つのボタンが活性化している時は次の処理へ、そうでない時はカウンター+1後、5秒後にb)へ戻る。
検索が正常終了すると検索ボタンとダウンロードボタンの両方が活性化します。
最初の検索ボタンをクリック後、同じ検索ボタンとダウンロードボタンが活性化しているか否かをGetAttributeで確認しているのですが、正常に属性を取得出来る時と出来ずにエラーになってしまう時があります。
2つのボタンの活性化状態を確認するのにDelayで5秒置きに確認するようにしています。
実はもう一つ発生するエラーがあり、関連があるかもしれないと思っていますが原因がつかめていません。内容は上記b)で”タイムアウトになりました。タイムアウトの時間を延ばすかwaitForReadyLevelプロパティを変更して下さい”
タイムアウト値を変更しても改善されません。(この事象も発生する時としない時があります)
何が原因なのか見当が付きません。
情報が不足している時はご指摘をください。
調査方法等、アドバイスを頂けないでしょうか?

@MIC_TANIGUCHI

こんにちわ!

全く回答になってないと思いながらですが・・・

過去の経験では、GetAttributeでボタンの活性化を
上手く取得できなかったため、ボタンの活性化ではなく、
別の要素で判断することにしました。
私の場合は次の処理に移行できる判断材料がステータスバー
に表示されていたためですが。

しおちゃん、回答ありがとうございます。
私も他の要素で判断出来れば良かったと思います。
検索結果は明細行が表示されるのですが前回分が残った(表示された)状態で検索実行される為に明細行が表示された事をトリガーとする事が出来ません。
前回表示分と今回表示分で判別するとしたら明細行の データ内容で判別するしかないと思っています。どのように実装するかイメージがわきません。
データ内容では無く、検索実行後に今回分の明細行が表示れたか否かの判別が出来るアクティビィテーがあれば試してみたい所です。

2020年6月1日(月) 18:20 しおちゃん via UiPath Community Forum <uipath@discoursemail.com>:

こんにちわ!

処理中とか一瞬でも表示されるところないですか・・・

それか最終手段として、
ボタン有効時のボタンの画像で「画像の有無を確認」です。
簡単な方法ですが、どっかから突っ込みが入りそうなのを覚悟で書きました。

こんにちは

Webとのことなので、Inject JS Script(JSスクリプトを挿入)アクティビティを使えばよいと思います。

対象となるボタンを指定した上で
スクリプトコードプロパティは以下

"function(e,v){return e.disabled.toString();}"

スクリプト出力として、Disable時は"true" Enableなときは"false"が文字列で返ってくるので、これを受ける変数をセットします。

一度お試しください。

2 Likes

私の時と違いアプリはWebでした・・・
突っ込みありがとうございます!

みなさん、回答ありがとうございます。
Webですが検索ボタン押下後、検索中は非活性表示に切り替わります。
なので画像有無の判断でも行けるかも知れません。
まずは余市さん方法(JSスクリプト)を試してみたいと思います。

こんにちは

コメントが漏れていましたが、こちらの事象はセレクターの設定の問題かもしれません。
(例えば異なるウインドウを見に行ってしまっている等、違う場所を探してしまっているなど)
セレクターの指定の方法を見直すことにより改善するかもしれません。

Yoichiさん
お世話になります。
JSスクリプトを実行すると、以下のエラーが返されます。

Activity:JSスクリプトを挿入’INPUT btnSearch’
Message:[object Error]

object Error との事ですが、基本的な事が間違っているのでしょうか?
ネットでググってみたのですが原因を見つける事が出来ません。
設定は以下の通りです。
●InjectJsScrptプロパティ
①スクリプトコード
“function(e,v){return e.disabled.tostring();}”
②セレクター

③スクリプト出力 blWk(Boolean型)

以上、よろしくお願いいたします。

●セレクター

Yoichiさん、補足ありがとうございます。
「違う場所を探している」について、GetAttrributeはシーケンス内直下で実行しているので、Windowスコープ内で実行してみます。

先ほど、Upした文字が欠落しましたので再Upします。
①スクリプトコード
“function(e,v){return e.disabled.tostring();}”
②セレクター
“<html htmlwindownama=’_WBGZD*” title=‘Composition class inquiry’ />"
“<webctrl id=‘btnSearch’ tag='INPUT”
③スクリプト出力
blWk(Boolean型)
以上、よろしくお願いいたします。

こんにちは

ご確認ありがとうございます。

Boolean型変数で受けるなら

"function(e,v){return e.disabled;}"

String型変数で受けるなら(大文字小文字が厳密に区別されるので)

"function(e,v){return e.disabled.toString();}"

になるかと思います。

ただ上記の誤りがあってもObject Errorにはならないと思うので、今回のエラーの原因では
ないように思えますが、一旦は上記修正をお試しいただければと思います。

引き続きエラーが出る場合は、他のボタンで同じコードを試すことによってどちらに問題が
あるかを切り分けできるかもしれません。(たとえばこのページの下の方にあるReplyボタンでも
このコードでDisabled属性を取得できます)

Yoichiさん、こんにちは。
“~.tostring” → "~.toString"に変更により正常に結果を取得する事ができました。
構築中のシステム内、このページの"Reply"の両方に於いて取得することが出来たのですが結果は"false"のみが返されます。
返却値型をBoolean、Stirngの両方を試してみましたが結果は、False,falseのいづれかです。
ロジックは以下を5回実施しました。
①JsScript実行→②False時、Delay2秒→①へ
JsScriptのセレクターは以下です
url “forum.uipath.com” →グレーアウト
id ember51
何か他に原因があるのでしょうか?
以上、よろしくお願いいたします。

こんにちは

まずDisabledがFalseの場合は、ボタンが押せる状態(活性)となります。
このページのReplyボタンはDisabledにはなっていないので、常にFalseが返ります。

構築中のシステムの方は仕様次第かもしれませんが、ボタンが非活性状態でもDisabledがFalseとして返っていますでしょうか?上記ロジックですとTrue/Falseが逆のように思えますが....

ご確認よろしくお願いします。

Yoichiさん、こんにちは。
返答が遅くなりましてすみません。

DisabledがFalseの場合は、ボタンが押せる状態(活性)となります。

冷静に考えれば、その通りですね。(enabledでな無いので)
想定通りの動作を確認する事ができました。
タイムアウトの問題はその後、現象が発生しておりません。
再度検証し解決しない時は再投稿させて頂きます。
ありがとうございました。
助かりました、また何かありましたらご相談させてください。

1 Like