ボタンがクリックできないときに試すこと2点【UiPath】

セレクターは間違っていないのに、なぜかボタンクリックが動作しないんだけど…。

という人に試してほしい対処方法を解説します。

それでは、どうぞ!

この記事を書いた人
この記事を書いた人
こさい
こさい

(株)完全自動化研究所代表のこさいです。

1) エンジニア歴25年超。RPA支援8年超
2) RPA関連の書籍を6冊出版。
3)ご質問・お仕事のご依頼はこちら

ボタンがクリックできないときに試すこと2点

[Click]アクティビティのデフォルトのプロパティは下図の通りです。[クリックをシミュレート]と[ウィンドウメッセージを送信]に何も選択されていません。

ワークフローを実行すると、マウスポインタ―がボタンの上に移動してクリックが行われます。これがデフォルトの動作です。

この動作でボタンがクリックできなかったときのプロパティ設定を解説します。

試すこと1点目:[クリックをシミュレート]をTrueにする

試してほしいことの1つ目は、[クリックをシミュレート]を「True」にすることです。

ワークフローを実行すると、マウスポインタ―は動かずにクリックが実行されます。

この設定の意味は「プロパティ設定が意味するもの」をご覧ください。

試すこと2点目:[ウィンドウメッセージを送信]をTrueにする

[クリックをシミュレート]を「True」でもうまく動作しなかったときは、[ウィンドウメッセージを送信]を「True」にしてください。

この設定の意味は「プロパティ設定が意味するもの」をご覧ください。

[クリックをシミュレート]と併用しようとすると、「設定できるオプションはクリックをシミュレートおよびウィンドウメッセージを送信のいずれか1つのみです」というエラーが表示されるので、[クリックをシミュレート]と同時には使うことができません。

プロパティ設定が意味するもの

これらの設定の意味をおおよそ理解することで、設定に迷わなくなるので解説します。詳しく「【Memo】3つのクリックモード」としてまとめました。

【Memo】3つのクリックモード
  1. デフォルト
    ハードウェア(キーボードやマウス)のデバイスドライバーにWin32API経由で送信する。
  2. クリックをシミュレート
    対象アプリケーションの仕組みを利用する。具体的には、Microsoft社のUIオートメーションというフレームワークを使って操作を行う。対象のUI要素がUIオートメーションでサポートしていない場合は、Microsoft社のActive Accessibilityというフレームワークを使う。
    UIオートメーションとMicrosoft Active Accessibilityについては、以下のURLを参照してください。
    URL UIオートメーションと Microsoft Active Accessibility
  3. ウィンドウメッセージを送信
    Windowsメッセージ(例えば、WM_KEYDOWN、WM_KEYUP、WM_LBUTTONDOWN、WM_LBUTTONUPなど)をセレクターで指定されたウィンドウにWin32API経由で送信する。

多くの場合、[クリックをシミュレート]で解決します。[クリックをシミュレート]は対象アプリケーションの仕組みを利用するので、動作する可能性が高いです。しかも、高速かつバックグラウンドで動作します。

注意点は動作しないWebサイトがあることです。テストを行って、動作を確認しましょう。

まとめ

多くのUiPath開発者が「なぜかクリックが効かない」という事象に出会ったことがあるのではないでしょうか?

よく「クリックがすべる」なんて言ったりします。

そんなときは、この記事にあるように、まず[クリックをシミュレート]を「True」にしてみてください。僕の経験上、動作する確率はかなり高いです。

[ウィンドウメッセージを送信]は、あまり使ったことはありません。

先日、どちらの方法でも解決しないこともありました。この時は、ボタンにフォーカスが移る前にクリックイベントが発生していたようで、プロパティ[実行前の待機時間]に5秒を設定することで回避できました。

どのような解決方法があるのかは、その環境によるので、思い込みを無くして色々と可能性を探ることが大切ですね。