概要
GoogleChromeブラウザを扱う基本クラス
オブジェクト設定
・変数宣言
Dim driver As New ChromeDriver
文法
driver.Get <URL>
driver.[メソッド]
メソッド・プロパティ
・メソッド(SearchContextからのクラス継承)
スクロールできます
Name | 解説 | Short Example |
---|---|---|
FindElement | 指定メソッドを使用して最初の Web要素 を検索、取得 | driver.FindElement(By.partiallinktext("Googleにつ")) |
FindElementBy | Byクラスを利用し、Web要素検索、取得 | Set elm = driver.FindElementBy(selenium.Strategy_Css, "#about > a:nth-child(3)") |
FindElementByClass | CSSクラスの値でWeb要素検索、取得 | driver.FindElementByClass("MV3Tnb").Click |
FindElementByCss | CSSセレクタの値でWeb要素検索、取得 | Set elm = driver.FindElementByCss("#archives-2 > div") |
FindElementById | Idの値でWeb要素検索、取得 | Set ele = Driver.FindElementById("searchInput") |
FindElementByLinkText | リンクテキストでWeb要素検索、取得(完全一致) | driver.FindElementByLinkText("Click Here").Click |
FindElementByName | Nameの値でWeb要素検索、取得 | driver.FindElementByName("q").SendKeys Keys.Control, "v" |
FindElementByPartialLinkText | リンクテキストでWeb要素検索、取得(部分一致) | Set ele = Driver.FindElementByPartialLinkText("飲酒") |
FindElementByTag | Tag名でWeb要素検索、取得 | Set body = Driver.FindElementByTag("body") |
FindElementByXPath | XPathWeb要素検索、取得 | Set ele = drv.FindElementByXPath("//input[@value='Google 検索']") |
FindElements | 指定メソッドを使用して検索ヒットしたWeb要素を全て取得 | driver.FindElements(By.partiallinktext("Google")) |
FindElementsBy | Byクラスで検索ヒットしたWeb要素を全て取得 | Set elm = driver.FindElementsBy(selenium.Strategy_Css, "#about > a:nth-child(3)") |
FindElementsByClass | CSSクラスの値で検索ヒットしたWeb要素を全て取得 | driver.FindElementsByClass("MV3Tnb").Click |
FindElementsByCss | CSSセレクタの値で検索ヒットしたWeb要素を全て取得 | Set tbl = driver.FindElementsByCss("#table1").AsTable |
FindElementsById | Idの値で検索ヒットしたWeb要素を全て取得 | Set ele = Driver.FindElementsById("searchInput") |
FindElementsByLinkText | リンクテキストで検索ヒットしたWeb要素を全て取得(完全一致) | drv.FindElementsByLinkText("ノート").Click |
FindElementsByName | Nameの値で検索ヒットしたWeb要素を全て取得 | driver.FindElementsByName("q").SendKeys Keys.Control, "v" |
FindElementsByPartialLinkText | リンクテキストで検索ヒットしたWeb要素を全て取得(部分一致) | Set ele = Driver.FindElementsByPartialLinkText("飲酒") |
FindElementsByTag | Tag名で検索ヒットしたWeb要素を全て取得 | Set body = Driver.FindElementsByTag("body") |
FindElementsByXPath | Xpath名で検索ヒットした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 |
ExecuteAsyncScript | JavaScriptコードを非同期で実行 | driver.ExecuteAsyncScript JS_WAIT_PDF_RENDERED |
ExecuteScript | JavaScriptコードの実行 | 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 |
WaitForScript | JavaScript の not null or true を返りを待機 | Driver.WaitForScript "return document.title;" |
※Short Exampleは、動作確認ができたコードを記載しています。
・プロパティ
スクロールできます
Name | 解説 | Short Example |
---|---|---|
Actions | Actionsクラスの取得 | driver.Actions.Click(ele) |
BaseUrl | 相対参照用のベースUrl取得 | Driver.baseUrl = "https://www.google.co.jp/intl/ja" |
Keyboard | キーボードクラスの取得 | Driver.Keyboard.KeyDown Keys.Control |
Keys | Keysクラスの取得 | Driver.Keyboard.KeyDown Keys.Control |
Manage | Manageクラスの取得(ドライバーの設定変更) | Mng.AddCookie "hoge", "hogehoge" |
Mouse | Mouseクラスの取得 | driver.Mouse.MoveTo elm |
Proxy | Proxyクラスの取得 | driver.Proxy.SetAutodetect |
Timeouts | Timeoutsクラスの取得(ブラウザ起動前に設定) | Timeout.PageLoad = 50000 |
Title | 現在画面のタイトル取得 | Debug.Print driver.title |
TouchActions | TouchActionsクラスの取得 | driver.TouchActions.FlickFrom(elm, 0, 400, 400).Wait(1500).Perform |
TouchScreen | TouchScreenクラスの取得 | driver.TouchScreen.Tap elm |
Url | 現在画面のURL取得 | Debug.Print driver.Url |
Window | Windowクラスの取得 | 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