SeleniumBasic WebDriverClass ブラウザを扱う基本クラス

リファレンス

概要

ブラウザを扱う基本クラスを解説します。事前にWebブラウザを指定せず、Startメソッドでブラウザを指定します。

オブジェクト設定

・変数宣言

Dim driver As New WebDriver

文法

driver.Start <ブラウザ名>,
driver.Get <URL>
driver.[メソッド]

メソッド・プロパティ

・メソッド(SearchContextからのクラス継承)

スクロールできます
Name解説Short Example
FindElement指定メソッドを使用して最初の Web要素 を検索、取得driver.FindElement(By.partiallinktext("Googleにつ"))
FindElementByByクラスを利用し、Web要素検索、取得Set elm = driver.FindElementBy(selenium.Strategy_Css, "#about > a:nth-child(3)")
FindElementByClassCSSクラスの値でWeb要素検索、取得driver.FindElementByClass("MV3Tnb").Click
FindElementByCssCSSセレクタの値でWeb要素検索、取得Set tbl = driver.FindElementByCss("#table1").AsTable
FindElementByIdIdの値でWeb要素検索、取得Set ele = Driver.FindElementById("searchInput")
FindElementByLinkTextリンクテキストでWeb要素検索、取得(完全一致)drv.FindElementByLinkText("ノート").Click
FindElementByNameNameの値でWeb要素検索、取得driver.FindElementByName("q").SendKeys Keys.Control, "v"
FindElementByPartialLinkTextリンクテキストでWeb要素検索、取得(部分一致)Set ele = Driver.FindElementByPartialLinkText("飲酒")
FindElementByTagTag名でWeb要素検索、取得Set body = Driver.FindElementByTag("body")
FindElementByXPathXPathWeb要素検索、取得Set ele = drv.FindElementByXPath("//input[@value='Google 検索']")
FindElements指定メソッドを使用して検索ヒットしたWeb要素を全て取得driver.FindElements(By.partiallinktext("Google"))
FindElementsByByクラスで検索ヒットしたWeb要素を全て取得Set elm = driver.FindElementsBy(selenium.Strategy_Css, "#about > a:nth-child(3)")
FindElementsByClassCSSクラスの値で検索ヒットしたWeb要素を全て取得driver.FindElementsByClass("MV3Tnb").Click
FindElementsByCssCSSセレクタの値で検索ヒットしたWeb要素を全て取得Set tbl = driver.FindElementsByCss("#table1").AsTable
FindElementsByIdIdの値で検索ヒットしたWeb要素を全て取得Set ele = Driver.FindElementsById("searchInput")
FindElementsByLinkTextリンクテキストで検索ヒットしたWeb要素を全て取得(完全一致)drv.FindElementsByLinkText("ノート").Click
FindElementsByNameNameの値で検索ヒットしたWeb要素を全て取得driver.FindElementsByName("q").SendKeys Keys.Control, "v"
FindElementsByPartialLinkTextリンクテキストで検索ヒットしたWeb要素を全て取得(部分一致)Set ele = Driver.FindElementsByPartialLinkText("飲酒")
FindElementsByTagTag名で検索ヒットしたWeb要素を全て取得Set body = Driver.FindElementsByTag("body")
FindElementsByXPathXpath名で検索ヒットしたWeb要素を全て取得Set ele = drv.FindElementsByXPath("//input[@value='Google 検索']")
IsElementPresent指定のWeb要素がページ内に存在するか確認Debug.Print driver.IsElementPresent(By.Class("MV3Tnb"))
WaitNotElement要素が無くなるのを待機driver.WaitNotElement By.Class("MV3Tnb"), 10000

・メソッド

スクロールできます
Name解説Short Example
ActiveElementアクティブ状態の要素driver.ActiveElement.SendKeys "hoge"
AddArgumentドライバー引数の追加driver.AddArgument "--headless"
driver.AddArgument "--incognito"
AddExtension拡張機能の追加(Firefox、Chrome限定)driver.AddExtension "<crx_directory>"
CacheStatusキャッシュ状態の取得 
Close現在のウィンドウを閉じるdriver.Close
ExecuteAsyncScriptJavaScriptコードを非同期で実行driver.ExecuteAsyncScript JS_WAIT_PDF_RENDERED
ExecuteScriptJavaScriptコードの実行ele.ExecuteScript JS_ADD_YELLOW_BORDER
Get設定したブラウザ(Chrome)でWebページを開く.Get "/index.html"
GetClipBoardクリップボードからテキストを取得Debug.Print driver.GetClipBoard
GoBackブラウザの「戻る」driver.GoBack
GoForwardブラウザの「進む」driver.GoForward
PageSource直近ページのページソース取得html.Write Driver.PageSource()
PageSourceMatchページソースで正規表現に一致する最初の出現を返す 
PageSourceMatchesページソースで正規表現に一致する全ての出現を返す 
Quitブラウザを閉じ、オブジェクトを破棄.Quit
Refresh現在ページの更新driver.Refresh
Send[Send]コマンドの実行driver.Send("GET", "/window_handles")
SendKeysキーボード入力操作driver.ActiveElement.SendKeys "hoge"
SetBinary指定ブラウザの実行ファイルを設定driver.SetBinary "C:\Program Files\Google\Chrome\Application\chrome.exe"
SetCapabilityリモートデバッグモード等、特定機能を設定driver.SetCapability "debuggerAddress", "127.0.0.1:9222"
SetClipBoardクリップボードにテキストを設定driver.SetClipBoard "testtext"
SetPreferenceブラウザの環境設定Driver.SetPreference "download.default_directory", ThisWorkbook.Path
SetProfile指定プロファイルを設定driver.SetProfile "Selenium"
Startブラウザのテストセッション開始.Start "Chrome", "https://google.co.jp"
StartRemotelyリモートセッションでブラウザ起動driver.StartRemotely SERVER, "chrome"
SwitchToAlertアラート(ダイアログボックス)にフォーカス移動Set dlg = driver.SwitchToAlert()
SwitchToDefaultContent最初のフレームにフォーカス移動Driver.SwitchToDefaultContent
SwitchToFrame指定のフレームにフォーカス移動Driver.SwitchToFrame "frame-top"
SwitchToNextWindow次のウィンドウに移動driver.SwitchToNextWindow
SwitchToParentFrame現在のフレームの親フレームに移動
SwitchToPreviousWindow前のウィンドウに移動driver.SwitchToPreviousWindow
SwitchToWindowByNameウィンドウハンドル値でウィンドウ移動driver.SwitchToWindowByName hwnds.Item(1)
SwitchToWindowByTitleウィンドウタイトル名でウィンドウ移動driver.SwitchToWindowByTitle "New Window"
TakeScreenshot現在ウィンドウのスクリーンショットを撮るdriver.TakeScreenshot()
Until< T> デリゲート関数のnot null or true の返りを待機。64bit版Officeでは動作不能driver.Until AddressOf WaitDelegate1, timeout:=2000
Wait待機(ミリ秒).Wait 1500
WaitForScriptJavaScript の not null or true を返りを待機Driver.WaitForScript "return document.title;"

※Short Exampleは、動作確認ができたコードを記載しています。

・プロパティ

スクロールできます
Name解説Short Example
ActionsActionsクラスの取得driver.Actions.Click(ele)
BaseUrl相対参照用のベースUrl取得Driver.baseUrl = "https://www.google.co.jp/intl/ja"
Keyboardキーボードクラスの取得Driver.Keyboard.KeyDown Keys.Control
KeysKeysクラスの取得ele.SendKeys "Eiffel tower" & Driver.Keys.Return
ManageManageクラスの取得(ドライバーの設定変更)driver.Manage.AddCookie "hoge", "hogehoge"
MouseMouseクラスの取得driver.Mouse.MoveTo elm
ProxyProxyクラスの取得driver.Proxy.SetAutodetect
TimeoutsTimeoutsクラスの取得(ブラウザ起動前に設定)driver.Timeouts.PageLoad = 10000
Title現在画面のタイトル取得Debug.Print driver.title
TouchActionsTouchActionsクラスの取得driver.TouchActions.FlickFrom(elm, 0, 400, 400).Wait(1500).Perform
TouchScreenTouchScreenクラスの取得driver.TouchScreen.Tap elm
Url現在画面のURL取得Debug.Print driver.Url
WindowWindowクラスの取得driver.Window.Maximize
Windows開いているブラウザのウィンドウ情報を全て取得Debug.Print driver.Windows.Count

※Short Exampleは、動作確認ができたコードを記載しています。

Example

 Exampleは基本的にChromeDriverと同様になります。以下ではWebDriverクラスの基本的な利用例を紹介します。

Use_WebDriver

Private Sub Use_WebDriver()
    Dim driver As New WebDriver
    With driver
        .Start "Chrome", "https://google.co.jp"
        .Get "/index.html"
        .Wait 1500
        .Quit
    End With
End Sub
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。