【EXCEL VBA | ノート】WEBブラウザを自動操作する!Selenium Basicの使い方!その2(Chrome編)

スポンサーリンク

SeleniumBasicの始め方

SeleniumBasicって何?って言う方は、まずはこちらの記事をどうぞ。

始め方を説明しています!

※SeleniumBasicの始め方

そして基本的な使い方をまとめた記事はこちら!

SeleniiumBasicの使い方(その2)

上の記事のように、前回SeleniumBasicの初めかたと、簡単なWEBブラウザの操作(検索ボックスで検索する)方法を紹介しました!

この記事では、更に更に踏み込んで、自分のメモ書きも兼ねて色々な機能を紹介したいと思います!

要素があるかどうか確認する

Dim myBy As New By
Driver.IsElementPresent(myBy.Css("セレクター"))

指定の要素があるかどうかの確認が出来ます。あるときはTrue、無いときはFalseが返ります。

ByクラスはSeleniumに搭載されたクラスでByのインスタンスを生成してその中のメソッドでタグやキーワードを指定する。

例では、Cssを指定するメソッドを使っているが、他にもある。

  • .Xpath
  • .id
  • .Css
  • .Tag
  • .linktext
  • .partiiallinktext
  • .Any
  • .name

これを使って、指定の要素があるかどうかで処理を分けれますね(^o^)

また、読み込みの確認をするのにも役立ちます!

Dim flag As Boolean
Do
    flag = Driver.IsElementPresent(myBy.Css("セレクター"))
Loop Until flag

みたいな感じにすることで、その要素が見つかってかた次の処理に進むということが出来ます。

Waitと組み合わせて安定稼働につなげましょう!

出てこない要素で指定しちゃうと、一生進まなくなるので注意して下さいw

要素を画面内に表示する

Seleniumでブラウザを操作していると必ずぶち当たりますが、Seleniumでチャックボックスとかボタンをクリックしたいとき、HTML上にあるけどブラウザの中にボタンが現れてないとエラー吐いちゃうんですよね(><)

適当にスクロールしたりするんですが、それも結構面倒だったり、モーダルになってたりすると、背景だけスクロールされちゃったりしちゃいます。

色々調べた結果、Seleniumの「driver.ExcuteScript」で、JavaScriptの「Element.scrollIntoView()」を使うのが一番ラクで安定するなって思っています(^o^)

driver.ExecuteScript("Element.scrollIntoView()")

”Element”の部分は、JavaScriptの「document.getElementById('id’) )とかで取得してくださいね(^o^)

driver.ExecuteScript ("document.getElementById('id').scrollIntoView()")

みたいな感じです。

モーダルウィンドウ上の要素も、サクッとブラウザ内に持ってくることが出来ますよ(^o^)