テキストを取得の精度を上げる

いつもお世話になっております。

WEBサイトからテキストを取得しているのですが、時々取得できないことがあります。(取得できることもあります。デバッグのステップイン等でゆっくりやると取得できることが多い気がします。)
このテキスト取得の精度を上げる方法はありますでしょうか。

上記で取得できなかった時、Traceメッセージで「System.Activities.InArgument`1[System.String]」と吐かれているのですが、これの意味は何でしょうか。

分かる方いらっしゃいましたらご教授お願いします。

こんにちは

タイミングの可能性が高い場合は、単純に取得できていない時にリトライすればよいように思えます。この場合、実装上はリトライスコープを使うのが簡単かと思います。

ありがとうございます。
リトライスコープは実装済みです。

こんにちは

「テキストを取得できない」とは空文字列を取得しているのか、あるいは例外が発生しているのか、どちらでしょうか?
また、もし可能でしたら、現在の実装等を共有いただくと良いかもしれません。

テキスト取得の後にブレークポイントを置いてデバッグ実行するとなぜか取得できたので、空文字を取得しているのか、何も取得できていないのか確認できませんでした。
しかし、上記をヒントにテキスト取得の後に1秒待機を入れると取得できました。
テキスト取得自体はできていたけど、その次の処理に入るのが早すぎて変数に格納できていないようなイメージでしょうか…
この辺り何か分かりますか?

こんにちは

変数への格納というよりは、実際の画面でテキストが生成(表示)される前に、テキストを
取得しているため、空文字列が取得されているという状況ではないでしょうか?

リトライスコープをお使いとのことですが、空文字列を取得した場合、その後これをチェック
しない限りは、例外とならず、リトライされないと思います。
そのため、取得した文字列が空文字列かどうかを、例えば以下のように
Check Falseアクティビティを使って評価すると、空文字列時は例外となり、
リトライされることになります。

もし上記状況に合致するようでしたら、一度試してみると良いかもしれません。

テキスト取得は例外で取得できていないようです。
ですので、これだけでもリトライされていると思っていましたが、念のためアドバイス頂いたFlaseか確認も追加し、空白orNULLの場合は再取得するようにしたいのですがなぜかIEが閉じてしまいます。
リトライスコープの後にIEを閉じるアクティビティはあります。
閉じた後テキスト取得をリトライしているようなのですが(デバッグ実行で実行しているアクティビティを辿りたいのですが、デバッグ実行するとテキスト取得できてしまうので確実なことは分かりません)、勿論取得できません。

何か問題が色々派生していまって申し訳ないのですが、アドバイスあればよろしくお願いいたします。

こんにちは

まずはリトライが機能しているかを確認するために
以下の様にリトライの中にtry catchを中に入れて、例外補足時はログを出力するようにしてみてください。
デバッグではなく、通常実行で、ログを見るとリトライがかかったかは判断できます。

ちなみに、もしGlobal Exception Handlerを設定している場合は、そちらの確認が必要かもしれません。

例外発生→リトライせずにグローバルハンドラーに飛んでいました。
そこでIEを閉じていました。
グローバルハンドラーを設定していたらリトライスコープは働かないのでしょうか。
設定の問題でしょうか。

こんにちは

以前上げていただいたトピックと同様ですね。GH内でContinueしてあげる必要があるかと思います。

Continueしているのですが、他のエラーの場合も考えてグローバルハンドラーではIE閉じたいのです…
そうなるとIE開くところからやり直さないといけないですね。
もう少し検討します…

グローバルハンドラーよりもリトライスコープを優先するような設定はないということですよね?
何度も同じこと聞いてすみません。

こんにちは

挙動を見る限りは、GH優先を変更できそうな設定などはなさそうですね。
GH内部のロジックを見直して、当該箇所での例外だけをContinueできると良いのですが....なかなか難しいかもしれません。

GHの扱いは結構難しいので、個人的には、GHを使わずにtry-catchで例外ハンドリング、終了するときはかならずリソース等を閉じるロジックを入れておく、ようにしています。