Selenium(Edge/Chrome)

Edge/Chromeでセレクトボックスの選択/解除【Selenium】【ExcelVBA】

VBAでEdge/Chromeを起動し、Webページ内のセレクトボックスの選択・解除する方法です。
セレクトボックスの事を、プルダウンドロップダウンメニューとも言います。

セレクトボックスの選択・解除するサンプルコード

当方の問い合わせページにセレクトボックスがある為、そちらをサンプルとして記載します。

'■Edge/Chromeでセレクトボックスを選択・解除する。
Public Sub sample()
    '■ブラウザを起動
    driver.Start "chrome" 'Edgeの場合はdriver.start "edge"
    driver.Get "https://vba-create.jp/kyoteivba-contact/"
    '■上から9番目の「その他投票」を選択する場合(どれでも一緒です)
    driver.FindElementsByName("pref")(1).AsSelect.SelectByIndex (8)  '上から9番目(0からスタートのため8)
    driver.FindElementsByName("votemenu")(1).AsSelect.SelectByValue ("その他投票")  'option value="その他投票"
    driver.FindElementsByName("votemenu")(1).AsSelect.SelectByText ("その他投票")   'Text(画面表示が)"その他投票"
    
    '■その他投票 を選択解除する
    driver.FindElementsByName("pref")(1).AsSelect.DeselectByIndex (0) '""を選択。
    '下記はマルチ選択の場合にのみ使えるため、セレクトボックスの場合は動作しません。
    driver.FindElementsByName("pref")(1).AsSelect.DeselectAll
    driver.FindElementsByName("pref")(1).AsSelect.DeselectByIndex (2)
    driver.FindElementsByName("pref")(1).AsSelect.DeselectByValue ("福岡")
    driver.FindElementsByName("pref")(1).AsSelect.DeselectByText ("福岡")
 
End Sub
'■HTMLサンプル
<span class="wpcf7-form-control-wrap votemenu">
    <select name="votemenu" class="wpcf7-form-control wpcf7-select wpcf7-validates-as-required" aria-required="true" aria-invalid="false">
        <option value=""></option>
        <option value="人気_追上(No別)">人気_追上(No別)</option>
        <option value="人気_追上(Gr別)">人気_追上(Gr別)</option>
        <option value="人気_追上(場別)">人気_追上(場別)</option>
        <option value="買い目_追上(No別)">買い目_追上(No別)</option>
        <option value="買い目_追上(Gr別)">買い目_追上(Gr別)</option>
        <option value="買い目_追上(場別)">買い目_追上(場別)</option>
        <option value="買い目_通常">買い目_通常</option>
        <option value="その他投票">その他投票</option>
    </select>
</span>

その他

  • JavaScriptが関わる、FireEventがある場合は、上記では動作しません。
  • サイトによってはJavaScriptで動いているにもかかわらず、
    onClick要素やChange要素がないケースがあります。ご注意ください。

SeleniumBasicについて

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

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

コメント

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