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

リファレンス

概要

GoogleChromeブラウザを扱う基本クラス

オブジェクト設定

・変数宣言

Dim driver As New ChromeDriver

文法

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 elm = driver.FindElementByCss("#archives-2 > div")
FindElementByIdIdの値でWeb要素検索、取得Set ele = Driver.FindElementById("searchInput")
FindElementByLinkTextリンクテキストでWeb要素検索、取得(完全一致)driver.FindElementByLinkText("Click Here").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ページを開くdriver.Get "https://www.google.co.jp"
GetClipBoardクリップボードからテキストを取得Debug.Print driver.GetClipBoard
GoBackブラウザの「戻る」driver.GoBack
GoForwardブラウザの「進む」driver.GoForward
PageSource直近ページのページソース取得html.Write Driver.PageSource()
PageSourceMatchページソースで正規表現に一致する最初の出現を返す 
PageSourceMatchesページソースで正規表現に一致する全ての出現を返す 
Quitブラウザを閉じ、オブジェクトを破棄driver.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ブラウザのテストセッション開始driver.Start "chrome"
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待機(ミリ秒)driver.Wait 2000
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クラスの取得Driver.Keyboard.KeyDown Keys.Control
ManageManageクラスの取得(ドライバーの設定変更)Mng.AddCookie "hoge", "hogehoge"
MouseMouseクラスの取得driver.Mouse.MoveTo elm
ProxyProxyクラスの取得driver.Proxy.SetAutodetect
TimeoutsTimeoutsクラスの取得(ブラウザ起動前に設定)Timeout.PageLoad = 50000
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

Use_ChromeDriver

Private Sub Use_ChromeDriver()
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim ele As selenium.WebElement
    Set ele = driver.ActiveElement
    ele.SendKeys "hoge"
    'driver.ActiveElement.SendKeys "hoge"
    driver.Wait 2000
    driver.Quit
End Sub

FindElement_By

Private Sub FindElement_By()
    Dim driver As New ChromeDriver, elm As WebElement
    driver.Get "https://ja.wikipedia.org/wiki/メインページ"
    Set elm = driver.FindElementBy(selenium.Strategy_Css, "#about > a:nth-child(3)")
    elm.Click
    driver.Wait 2000
    driver.Quit
End Sub

FindElement_Class

Private Sub FindElement_Class()
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    driver.FindElementByClass("MV3Tnb").Click
    driver.Wait 2000
    driver.GoBack
    driver.Wait 2000
    driver.GoForward
    driver.Refresh
    Stop
    driver.Quit
End Sub

AddAurgument

Private Sub AddAurgument()
    Dim driver As New ChromeDriver
'    driver.AddArgument "--headless"
    driver.AddArgument "--incognito"
    driver.AddArgument "--start-maximized"
    driver.Get "https://www.google.co.jp"
    driver.FindElementByClass("MV3Tnb").Click
    Stop
    driver.Quit
End Sub

WaitNot_Class

Private Sub WaitNot_Class()
    Dim driver As New ChromeDriver
    Dim By As New By
    driver.Get "https://www.google.co.jp"
    driver.WaitNotElement By.Class("MV3Tnb"), 10000
    driver.FindElementByClass("MV3Tnb").Click
    driver.Wait 2000
    driver.Quit
End Sub

IsElementPresent_Class

Private Sub IsElementPresent_Class()
    Dim driver As New selenium.WebDriver
    Dim By As New By
    driver.Start "chrome"
    driver.Get "https://www.google.co.jp"
    Debug.Print driver.IsElementPresent(By.Class("MV3Tnb"))
    driver.Wait 2000
    driver.Quit
End Sub

ClipBoard_Class

Private Sub ClipBoard_Class()
    Dim driver As New ChromeDriver
    Dim Keys As New Keys
    driver.Get "https://www.google.co.jp"
    driver.SetClipBoard "testtext"
    Debug.Print driver.GetClipBoard
    driver.FindElementByName("q").SendKeys Keys.Control, "v"
    driver.Wait 2000
    driver.Quit
End Sub

Set_SetBinary

Public Sub Set_SetBinary()
    Dim driver As New WebDriver
    driver.SetBinary "C:\Program Files\Google\Chrome\Application\chrome.exe"
    driver.Start "chrome"
    driver.Window.Maximize
    driver.Wait 2000
    driver.Quit
End Sub

Window_SwitchByTitle

Private Sub Window_SwitchByTitle()
    Dim Assert As New selenium.Assert
    Dim driver As New ChromeDriver
    driver.Get "https://the-internet.herokuapp.com/windows"
    driver.FindElementByLinkText("Click Here").Click
    driver.Wait 2000
    driver.SwitchToWindowByTitle "New Window"
    Assert.Equals "New Window", driver.title
    driver.SwitchToPreviousWindow
    Assert.NotEquals "New Window", driver.title
    driver.Wait 2000
    Debug.Print driver.Windows.Count
    driver.Quit
End Sub

Window_SwitchByName

Private Sub Window_SwitchByName()
    Dim Keys As New Keys
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim hwnds As selenium.List
    Set hwnds = driver.Send("GET", "/window_handles")
    driver.FindElementByClass("MV3Tnb").Click Keys.Control
    driver.SwitchToNextWindow
    driver.Wait 2000
    driver.SwitchToWindowByName hwnds.Item(1)
    driver.Wait 2000
    driver.Quit
End Sub

Use_WaitForScript

Private Sub Use_WaitForScript()
    Dim driver As New ChromeDriver
    driver.Get "https://ja.wikipedia.org/wiki/Main_Page"
    Dim title As String
    title = driver.ExecuteScript("return document.title;")
    driver.WaitForScript "return document.title;"
    Debug.Assert "Wikipedia" = title
    Stop
    driver.Quit
End Sub

Use_Keboard

Private Sub Use_Keboard()
    Dim driver As New ChromeDriver
    Dim Keys As New Keys
    driver.Get "https://ja.wikipedia.org/wiki/Main_Page"
    driver.Keyboard.KeyDown Keys.Control
    driver.SendKeys "a"
    driver.Keyboard.KeyUp Keys.Control
    Stop
    driver.Quit
End Sub

Get_Title

Private Sub Get_Title()
    Dim driver As New ChromeDriver
    Dim Keys As New Keys
    driver.Get "https://ja.wikipedia.org/wiki/Main_Page"
    Debug.Print driver.title
    driver.Quit
End Sub

ChromeDriver_Property

Private Sub ChromeDriver_Property()
    Dim driver As New ChromeDriver
    driver.Get "https://programan.org/"
    Dim elm As selenium.WebElement
    
    driver.Window.Maximize
    Set elm = driver.FindElementByCss("#archives-2 > div")
    driver.TouchActions.FlickFrom(elm, 0, 400, 400).Wait(1500).Perform
    
    Set elm = driver.FindElementByCss("#categories-2 > ul > li.cat-item.cat-item-5 > a")
    driver.Mouse.MoveTo elm
    driver.Wait 1500
    driver.TouchScreen.Tap elm
    driver.Wait 1500
    
    Debug.Print driver.Url
    driver.Quit
End Sub

DriverProxy_SetAutodetect

Private Sub DriverProxy_SetAutodetect()
    Const ProxyUrl As String = "192.168.11.139:3128"
    Dim driver As New ChromeDriver
    driver.Proxy.SetAutodetect
    driver.Get "https://google.co.jp"
    driver.Wait 1500
    driver.Quit
End Sub
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

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