Selenium(Edge/Chrome)

Selenium「Edge/Chromeでsubmitボタンをクリックする」【エクセルマクロ】

Edge/Chromeで掲示板や、問い合わせフォームなどのsubmitボタンをクリックしたいケースがあります。
id要素があれば、簡単にクリックができることは以前ご説明しました。

では、当方のお問い合わせページのような、submitを使う場合、
どのようにすればクリックできるでしょうか。

基本はfor eachで全ての要素をチェックする

Selenium「Edge/Chromeでid要素やName要素がなくてもボタンクリックをする」
考え方は一緒です。「submit」の要素をチェックしてクリックするだけです。
Class要素がなくてもTag要素で検索すればよいのです。

HTML(submit)のサンプル

 
//HTMLサンプル inputタグにsubmit
<input type="submit" value="送信">

VBAでsubmitをクリック

下記VBAコードサンプルのように、for eachで「送信」が含まれる文字を探して、クリックします。

    Dim objTag As Object
    '■submitをクリックする場合
    For Each objTag In driver.FindElementsByTag("input")
    '■TagがinputのValue内に「送信」が含まれていたら、
    If InStr(objTag.Value, "送信") > 0 Then
        '■■送信ボタンクリック
        objTag.Submit   'submitでエラーが出る場合は大体objTag.Clickで処理できるはずです。
        Exit For
    End If
Next

注意点

  • あくまでも上記はSeleniumでの一例です。IE自動操作からSeleniumに乗り換えた方であればわかりやすい表現です。
  • タグって何なの?という方はVBAではなく、HTMLを少し勉強が必要ですね。
    HTMLタグ一覧を参照して、目的のタグを探してください。

よく使うタグは以下。

inputインプット
tdテーブル
liリスト
aハイパーリンク
pページレイアウト

またfor eachでループするのは時間がかかりすぎたり、VBAがエラーを起こすのでは?と思われるかと思いますが、そこまで時間がかかるわけではなく、エラーが起きるのは違う要因がほとんどだと考えます。

SeleniumBasicについて

Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。

但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。

コメント

タイトルとURLをコピーしました