お世話になります。超初心者です。
Webページ上のボタンの押下可否を判定して、押せるようになるまで待つ方法を探しています。
Get Attributeを使えばボタンの状態を取得できそうですが、具体的にどうすれば良いかわかりません。よろしくお願い致します。
お世話になります。超初心者です。
Webページ上のボタンの押下可否を判定して、押せるようになるまで待つ方法を探しています。
Get Attributeを使えばボタンの状態を取得できそうですが、具体的にどうすれば良いかわかりません。よろしくお願い致します。
投稿時に日本語がおかしくなったので、再投稿します。
お世話になります。超初心者です。
Webページ上のボタンの押下可否を判断して、押せる状態になるまで待つ方法を探しています。
Get Attributeを使えばボタンの状態を取得できそうですが、どうすればいいかわかりません。よろしくお願いします。
まず、日本語の文章を正しく投稿する方法が知りたいです・・・
Webページ上のボタンの押下可否を判断して、押せる状態になるまで待つ方法を探しています。
私はこの声明と混同しています。
あなたはこれについてもう少し詳しく話してください。
クリックするボタンがあるまで待つのですか?
その場合、Elimentが存在するプロパティを使用します。
それはブール値trueまたはfalseを与えます。 その値を取得したら、ボタンをクリックします。 同じ要素が存在するアクティビティをループする場合は、そのボタンをクリックします。
私のインプットが役に立つと願って
インタラクティブな選択
ありがとうございます。試してみます。
すみません。
「ボタンが存在するかどうか」ではなく、「ボタンが押せる状態かどうか」を判定したいのです。
@tosh さん、こんにちは
対象のWebページ上のボタンが昔からあるフォームのボタン(下記のようなhtml)
<input name="Button1" type="button" value="button" disabled="disabled" />
であればGet Attributeアクティビティのアトリビュート名を**“disabled”**にすると検知できました。
ただし、最近のイケてるサイトが使っているBootstrapなどのフレームワークでinputタグではなくCSSなどで擬似的にボタンを作っているケースでこれが正しく動くのかあやしいです。
tangoさん、回答ありがとうございました。
実際にやってみました。
エラーにはなりませんでしたが、OutputのResultに設定した変数が初期値から変化せず、
結果が取得できていないようです。
問題のボタンのセレクターと外観は以下のようになっています。
※自分で投稿した文章の日本語が変だと思ったのは、翻訳されたページを見ていたためでした。お騒がせしました。
@tosh 様
その問題ボタンについて、 ページのソースコードを見てみれば <input type="button">
になっていますか。
@tango 様が仰った通り、CSSの擬似的にボタンになっていることであればGetAttributeが使えない場合もあります。
こちらも検証しますが、そのボタンの種類について教えて頂ければと思います。
Htmlの知識がなく申し訳ないのですが、
Webページのソースを表示したところ、問題のボタンの記述は以下のようになっていました。
(転記する際、先頭の「<」は削除しました。)
button id=“downloadButton” type=“button” onclick=“javascript:saveResultToSpreadsheet();”
class=“btn span disabled” disabled=“true”>
i class=“icon-si-inbox”>
span id=“SRCH_02_SaveResultsAs” class=“localizable”>…で保存
/button>
@tosh 様
ご確認ありがとうございました。
普通のボタンだそうですね。
ボタンの押下可否を判断することにはGetAttributeが使えますが、属性のDisabledではなく、aastate
という属性を確認すればクリックできるかどうかわかります。
aastate
はfocusable
かunavailable
になりますが、日本語だとフォーカスできます。
か利用できません。
の値になります。ちなみに、UiExplorerでこの値をご確認いただけます。
また、ボタンを押下できるまで待ちたいということであれば、GetAttributeではなくWaitAtributeを使うことお勧めします。
ご参考のため、例を添付します:GetAttributeWebForm.xaml (13.1 KB)
WaitAttributeWebForm.xaml (10.3 KB)
サンプルまで付けていただき、ありがとうございます。
この方法で試してみます。
頂いたサンプルと同様に、FindElementでボタンを取得し、WaitAttributeでaastateの値が"focusable"になるまで待つようにしましたが、期待した動作にはなりませんでした。
GetAttributeでaastateの値を取得すると「見えません。, 画面の表示領域を超えています。」になっていました。
ボタンが画面外にある場合はそのように出るのでしょうか?
「フォーカスできます。」にするには、ボタンが画面内にないといけないのでしょうか?
結果を報告します。
DoWhileを使い、GetAttributeでボタンから取得したaastateの値が「利用できません。」ではなくなるまで待ち、その後ボタンが見える位置までキー入力で画面をスクロールする様にして解決しました。
aastateの値が、ボタンが画面上の見える位置にあるかどうかによって「フォーカスできます。」または「見えません。, 画面の表示領域を超えています。」の2通りに分かれるため、WaitAttributeは使いませんでした。
それにしても、aastateの内容は本当に日本語の文字列だったんですね・・・
最初、表示上そうなっているだけだと思い込んでいたので、ループ条件が合わず悩みました。
皆様のご助力感謝いたします。ありがとうございました。
Hi @Mateus_Cruz
disabledではなくaastateでなければならない理由は何でしょうか?
私は、inputタグでもbuttonタグでもdisable属性がGet Attributeで取得できています。
理由が知りたいです。
@tango 様
ブラウザー上でDisabledが使えますが、デスクトップアプリでDisabledという属性がありません(UiExplorerでご確認いただけます)。
一方、aastateはブラウザー上でもデスクトップでも利用できますので、aastateの方お勧めします。
なるほど、理解しました。
私がaastateを躊躇うのは、aastateがbooleanや定数ではなく、ローカライズされたメッセージの組み合わせであることです。
今のところUiPath Studioはローカライズされていませんが、このメッセージだけ日本語になるのも不思議ですね。