サイトのアドレスが変わらない場合の読み込み待ち確認方法

819 views
Skip to first unread message

demy blue

unread,
May 22, 2021, 6:18:08 AM5/22/21
to 日本Seleniumユーザーコミュニティ
お世話になります。Webの知識が少ない初心者ですがお教えください。

当方以下環境でWebのスクレイピングを自動化したいと考えています。
ブラウザ:Chrome
言語:VBA(SeleniumBasicインストール済み)

イントラの中のサイトの為公開できないのですが以下のようなサイトでテキストボックスに文字を入力すると結果が別のテキストボックスに出てくるもので結果を取得したいと考えています。
ただし、文字入力によりサイトが遷移する(アドレスが変わる)方式ではなく同じアドレスのまま結果が出てくる為読み込み待ちの完了を判断できなく困っております。

現状は結果の出るテキストボックス内の文字が変化するまで待つように
Do ~Loopを組んでいますが同じ結果が続く場合もあり処理に差が出てしまっています。

Seleniumの問題とは異なるのかもしれませんがどのようにしたら結果が読み込まれたかを判断することができますでしょうか?

無知の為無理のない範囲でヒント等お教えいただければ幸いです。
お願いいたします。

fj.h...@gmail.com

unread,
May 22, 2021, 6:30:16 AM5/22/21
to 日本Seleniumユーザーコミュニティ
頑張ってください😀

次の方法どうでしょう?

1.
deeplの様に、結果が出るまでインジケーター(クルクル回ってるやつ)が表示されるのであれば、
インジケーターが表示されるまで待って、
その後にインジケーターが消えるまで待てば、
結果が更新されたタイミングでチェックできそうです。

2.
テキストを入れて、結果をチェックして、またテキストを入れて結果をチェックして、、、と続けるのではなく、
テキスト入れて結果をチェックして、
再度サイトを開き直してテキスト入力して結果をチェックする。。。

というのはどうでしょう?

2021年5月22日土曜日 19:18:08 UTC+9 bluede...@gmail.com:

demy blue

unread,
May 22, 2021, 10:40:21 PM5/22/21
to 日本Seleniumユーザーコミュニティ
細かいコードなど書けない中ありがとうございます。

1でできないか試してみます。ロードされているのではなさそうですが。
2はサイトを開きなおすたびに証明書の選択が出てくるため今のところ処理できていません。
証明書の選択はブラウザではなくOS側のようなので調べています・・・。

ヒントいただけるだけでも助かります。ありがとうございます。

2021年5月22日土曜日 19:30:16 UTC+9 fj.h...@gmail.com:

demy blue

unread,
May 24, 2021, 6:51:48 AM5/24/21
to 日本Seleniumユーザーコミュニティ
ありがとうございます。Event Listenerが働いていることがわかりました。
文字が入力されると自動で変換されるようになっていました。

手動でそれを削除してやると自動ロードが止まるのですんなりといくようにはなりましたが
VBAでEvent Listenerの削除方法がわからず・・・Javascriptがわからないとできないでしょうかね。
難しいです。
2021年5月23日日曜日 11:40:21 UTC+9 demy blue:

demy blue

unread,
May 25, 2021, 8:09:31 AM5/25/21
to 日本Seleniumユーザーコミュニティ
Selenium実践入門を注文してみました。また届いたら試してみて経過報告します。

2021年5月24日月曜日 19:51:48 UTC+9 demy blue:

demy blue

unread,
May 29, 2021, 10:48:58 AM5/29/21
to 日本Seleniumユーザーコミュニティ
たびたび申し訳ありません。以下のイベントリスナーを削除したいと思っています。
2021-05-29_234111.jpg2021-05-29_234226.jpg

2021-05-29_233003.jpg

2021-05-29_233108.jpg
以下のVBAのコードでエラーはなく進んでいるのですがイベントリスナーが削除されていません。
Driver.ExecuteScript ("document.getElementById('sourceText').removeEventListener('input', sourceTextInput())")

手動でRemoveを押すと削除されます。

このイベントリスナーが自動化において邪魔をしているので削除したいのですが
コードの間違いについて説明いただけないでしょうか?
本を購入したのですがうまくいっておりません。お手数をおかけしますがよろしくお願いします。

2021年5月25日火曜日 21:09:31 UTC+9 demy blue:

戸田広

unread,
Jun 1, 2021, 3:03:28 AM6/1/21
to demy blue, 日本Seleniumユーザーコミュニティ
removeEventListerの第2引数は、関数の戻り値ではなく、関数オブジェクトです。
https://developer.mozilla.org/ja/docs/Web/API/EventTarget/removeEventListener


> Driver.ExecuteScript ("document.getElementById('sourceText').removeEventListener('input', sourceTextInput())")

この場合、関数 sourceTextInput を実行しているので、
removeEventListener の第2引数には、関数 sourceTextInput を実行した後の戻り値が与えられます。

> Driver.ExecuteScript ("document.getElementById('sourceText').removeEventListener('input', sourceTextInput)")

この場合、 removeEventListener の第2引数には、関数 sourceTextInput のオブジェクトが与えられます。




2021年5月29日(土) 23:49 demy blue <bluede...@gmail.com>:
--
このメールは Google グループのグループ「日本Seleniumユーザーコミュニティ」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには seleniumjp+...@googlegroups.com にメールを送信してください。
このディスカッションをウェブ上で閲覧するには https://groups.google.com/d/msgid/seleniumjp/99128d40-180d-44ea-9176-887966a82df4n%40googlegroups.com にアクセスしてください。

demy blue

unread,
Jun 4, 2021, 3:23:40 AM6/4/21
to 日本Seleniumユーザーコミュニティ
遅くなりました。ありがとうございます。
すみません、関数のオブジェクトとしても確認していた(()を削除)のですがうまくいきませんでした。

914のoninput="sourceTextInput()"が実行されると以下のフローが実行されます。
2021-06-04_162045.jpg
このfunctionが邪魔なので消したいと思っているのですが今のところは
EventlistnerにあるRemoveボタンで除去するしか方法がない状況です。

やり方が間違っているのかもしれませんがご助言いただければ幸いです。
2021年6月1日火曜日 16:03:28 UTC+9 hiros...@ossaaaan.com:
Reply all
Reply to author
Forward
0 new messages