こんにちは。
友人から頼まれて使ったこともないSeleniumというものを調査し、ExcelのVBAから使ってみました。以下、その備忘録です。
今回は、以前紹介したFindElement系メソッドの複数検索版、FindElements系メソッドにチャレンジしてみたいと思います。
■ 動作環境
OS: Windows 8.1(64ビット)
Excel: 2013(32ビット)
Chrome: 86.0.4240.198
Selenium Basic: v2.0.9.0
■ とりあえず動かしてみる…
WebDriverオブジェクトを作って、Webサイトへアクセスする箇所は割愛です。^^
あるフリマサービスで、私が出品している品物の一覧画面において、出品一覧を取得してみました。
実行結果は、次のとおりです。
textプロパティから返ってくる値は「商品名」、「いいねの数」、「コメントの数」、「出品ステータス」でした。(なので、この後に何等かの処理にこれら値を使うためには、文字列編集を駆使しないといけないので面倒です…。涙)
※「test」は、サブルーチンの名前
※textプロパティの内容が改行されているのは、vbLfが含まれているため
■ FindElements系メソッド
冒頭で説明したとおり、FindElement系メソッドの複数検索版です。
WebDriverクラスに、以下のものが実装されています。
FindElementsByClass
FindElementsByCss
FindElementsById
FindElementsByLinkText
FindElementsByName
FindElementsByPartialLinkText
FindElementsByTag
FindElementsByXPath
①引数
概ねどのメソッドも「name As String」、「minimum As Long」、「timeout As Long」の3種類を引数として扱いますが、まずはnameだけ操作できるようになれば十分です。笑
nameとは、~ByClassであればクラス名、~ByIdであればID名のようにメソッドごとで要素を特定するために使う識別値(の名称)のことを指します。
②戻り値
WebElementオブジェクトの集合体(WebElements)です。
■ 特定の要素を取り扱う
FindElementsBy系メソッドで取得できるWebElementsの、特定のWebElementのみを取り扱う場合は、以下の何れでもいけるみたいです。
例①
例②
※いずれも1個目(配列1スタート)の要素を指定する場合の方法
■ 全ての要素を取り扱う
取得できるWebElementsの大方の要素を取り扱う場合は、以下の何れかでしょう。
例①: For Each文の利用
例②: Countプロパティの利用
■ まとめ
FindElements系メソッド、いかがでしたか?
Webサイトの操作をするためには、いかに要素を特定するかが重要であり、その決め手となるのがFindElement系メソッド、FindElements系メソッドですので絶対ノウハウ習得したいですよね!
なお、本備忘録も活用した【メルカリ管理ツール】を以下サイトで販売しております。
ご興味ございましたらご覧ください。
次回以降も、苦労した点を備忘録しようと思います。
Comments