VBAでEdge/Chromeを起動し、Webページ内のラジオボタンの選択・解除する方法です。
要素を指定し、クリック処理を入れるだけです。
ラジオボタンを選択・解除するサンプルコード
当方の問い合わせページにラジオボタンがある為、そちらをサンプルとして記載します。
Dim driver As New Selenium.WebDriver '■Edge/Chromeでラジオボタンを選択・解除する。 Public Sub sample() '■ブラウザを起動 driver.Start "chrome" 'Edgeの場合はdriver.start "edge" driver.Get "https://vba-create.jp/contact/" '■ページ内ラジオボタンをクリック driver.FindElementsByName("radio-type")(1).Click 'メール希望がTrue driver.FindElementsByName("radio-type")(2).Click '電話希望 がTrue driver.FindElementsByName("radio-type")(3).Click '打合せ希望がTrue End Sub
'■HTMLサンプル(name="radio-type"があり、name要素が存在) <span class="wpcf7-form-control wpcf7-radio"> <span class="wpcf7-list-item first"> <input type="radio" name="radio-type" value="メール希望" checked="checked"> <span class="wpcf7-list-item-label">メール希望</span> </span> <span class="wpcf7-list-item"> <input type="radio" name="radio-type" value="電話希望"> <span class="wpcf7-list-item-label">電話希望</span> </span> <span class="wpcf7-list-item last"> <input type="radio" name="radio-type" value="打合せ希望"> <span class="wpcf7-list-item-label">打合せ希望</span> </span> </span> </span>
Clickしたが反応がない場合がある
onclick等のJavaScript(JS)要素があるラジオボタンは反応しない場合があります。
ラジオボタンにJavaScript要素がある場合
ラジオボタンの処理はしたが、JavaScript側の動作(onClick処理等)を行っていない為、
ブラウザ上は何もしていない扱いと同様になります。
ラジオボタンの処理はしたが、JavaScript側の動作(onClick処理等)を行っていない為、
ブラウザ上は何もしていない扱いと同様になります。
上記の場合はExecuteScriptで、JavaScriptを動作させることで回避可能です。
SeleniumBasicについて
Internet Explorer11 のサポート期限が2022年6月までと、スクレイピング自体入れ替えていく必要があります。
今一番スムーズなのはSeleniumBasicを使用したスクレイピングと考えます。
但し、VBAでのネット記事は少なく困っている方も多いと思います。
弊社で代行開発も可能ですので、お気軽にご用命ください。
コメント