【Excel VBA×Selenium】CSSセレクターで要素を取得・クリックする方法|id・class・属性指定
みなさんこんにちは。
Excel VBAとSeleniumを使ってWebページを操作するとき、要素を取得する方法としてXPathを使用している方も多いかと思います。
SeleniumではXPathだけでなく、CSSセレクターを使ってid・class・属性などから対象要素を指定することもできます。
今回は、FindElementByCssを使ってCSSセレクターから要素を取得し、クリックする方法をご紹介したいと思います。
この記事はこんな人におすすめ
- VBA×SeleniumでCSSセレクターを使いたい人
- id・class・属性から要素を取得したい人
- XPath以外の要素指定方法を知りたい人
CSSセレクターとは
CSSセレクターは、本来Webページのデザインを適用する要素を指定するための記述方法です。Seleniumでも同じ指定方法を使ってWeb要素を検索できます。
SeleniumBasicには、CSSセレクターで最初の一致要素を取得するFindElementByCssが用意されています。
idを指定して要素を取得する
HTMLにid="loginButton"が設定されている場合は、idの前に#を付けて指定します。
Dim target As Selenium.WebElement
'========================================
' idがloginButtonの要素を取得する
' #の後ろにidを指定する
'========================================
Set target = driver.FindElementByCss( _
"#loginButton" _
)
'取得した要素をクリックする
target.Click
classを指定して要素を取得する
classを指定する場合は、class名の前に.を付けます。
'========================================
' classがprimary-buttonの要素を取得する
'========================================
Set target = driver.FindElementByCss( _
".primary-button" _
)
target.Click
同じclassを持つ要素が複数存在する場合は、最初に一致した要素が取得されるため、別の条件を追加して絞り込むと安心です。
属性を指定して要素を取得する
data-actionやnameなどの属性から指定する場合は、角括弧を使用します。
'========================================
' data-action属性がloginの要素を取得する
'========================================
Set target = driver.FindElementByCss( _
"[data-action='login']" _
)
target.Click

複数条件を組み合わせる
タグ名・class・属性を組み合わせると、対象要素をさらに絞り込めます。
'========================================
' buttonタグかつ
' classがprimary-button、
' data-actionがloginの要素を取得する
'========================================
Set target = driver.FindElementByCss( _
"button.primary-button[data-action='login']" _
)
'対象のボタンをクリックする
target.Click
このように条件を組み合わせることで、同じclassを持つボタンが複数あるページでも対象を指定しやすくなります。

CSSセレクターとXPathを使い分ける
id・class・属性から要素を指定する場合は、CSSセレクターで簡潔に記述できることがあります。一方、要素の階層や文字列を条件にしたい場合はXPathの方が分かりやすい場合もあります。
最後に
いかがでしたでしょうか。
今回は、Excel VBA×SeleniumでCSSセレクターを使って要素を取得・クリックする方法をご紹介しました。
#id・.class・[属性='値']を覚えておくと、XPath以外にも要素を指定する方法の選択肢が広がります。
Webページの要素を取得するときに、少しでも参考になれば幸いです。
開発依頼について
ココナラでWebスクレイピング開発サービスを出品しております。
自分で開発をしようと思ったけど、VBAでのネット記事が少なく困っている方も多いかと思います。
そんな方はいつでもお気軽にご相談ください。
また、本ブログからご依頼いただいた方については割引特典がございますので、
ご不明点と合わせてメッセージをいただけると幸いです。
Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!Webスクレイピング以外にもWebアプリの開発サービスも出品しております。
こちらについても、本ブログからご依頼いただいた方については割引特典がございますので、
お気軽にご相談ください。
スモールスケールのWebアプリ開発します 先ずはスモールスケールのWebアプリから始めませんか?

