概要
SeleniumBasicのディクショナリー用クラス。VBAの連想配列と類似したクラスでKeyやItemの設定がVBAの連想配列と酷似しています。VBAのDictionaryが型混合ができないのに対し、SeleniumBasicのDictionaryは型混合が可能です。状況に応じて上手く使い分けると良いと思います。
オブジェクト設定
・変数宣言
Dim Dic As Dictionary
Dim Dic As New Dictionary
※Driverから独立して使用する場合は、New付が必須
文法
Dic.Add <Key> , <Item>
Dic.[メソッド]
メソッド・プロパティ
メソッド
スクロールできます
Name | 解説 | ShortExample |
---|---|---|
Add | Dictionaryに新しい値を追加 | Dic.Add eles(0).Item(i).Text, eles(1).Item(i).Text |
Clear | Dictionaryをクリア | Dic.Clear |
ContainsKey | キーが存在すればTrue,無ければFalseを返す(完全一致検索) | Debug.Print Dic.ContainsKey("Smith") |
Get | 指定キーで登録された値を返す。キーが存在しない場合は第二引数を返す。 | Debug.Print Dic.Get("hoge", "Not Exist") |
Set | 指定されたキーの値を設定。キーが無ければキーを新たに作成。 | Dic.Set "hoge", "age" |
ToExcel | Excelへ出力 | Dic.ToExcel |
※Short Exampleは、動作確認ができたコードを記載しています。
プロパティ
スクロールできます
Name | 解説 | ShortExample |
---|---|---|
Count | アイテム数を返す | Debug.Print Dic.Count |
Item | キーに対する値を返す | Debug.Print Dic.Item("hoge") |
Keys | キーを配列で返す | Key = Dic.Keys |
Values | アイテムを配列で返す | Item = Dic.Values |
※Short Exampleは、動作確認ができたコードを記載しています。
Example
Use_DicAdd
Private Sub Use_DicAdd()
Dim Driver As New ChromeDriver
Driver.Get "https://the-internet.herokuapp.com/tables"
Dim eles(1) As WebElements
Set eles(0) = Driver.FindElementsByCss("#table1 tbody tr td:nth-child(1)")
Set eles(1) = Driver.FindElementsByCss("#table1 tbody tr td:nth-child(2)")
Dim Dic As New Dictionary 'Newが必須
Dim i As Integer
For i = 1 To eles(0).Count
Dic.Add eles(0).Item(i).Text, eles(1).Item(i).Text 'キーもアイテムもテキストを登録しているため、Driver配下の処理とはならない。
Next i
Debug.Print Dic.Count
Debug.Print Dic.Get("Smit", "Not Exist")
Dic.Set "hoge", "age"
Debug.Print Dic.Count
Debug.Print Dic.Get("hoge", "Not Exist")
Debug.Print Dic.Item("hoge")
Debug.Print Dic.ContainsKey("Smith")
Dim Key, Item
Key = Dic.Keys
Item = Dic.Values
For i = 0 To Dic.Count - 1
Debug.Print Key(i) & " : " & Item(i)
Next i
Dic.ToExcel
Dic.Clear
Dic.ToExcel
Driver.Quit
End Sub
Get_DicObject
Private Sub Get_DicObject()
Dim Driver As New ChromeDriver
Driver.Get "https://the-internet.herokuapp.com/tables"
Dim eles(1) As WebElements
Set eles(0) = Driver.FindElementsByCss("#table1 tbody tr td:nth-child(1)")
Set eles(1) = Driver.FindElementsByCss("#table1 tbody tr td:nth-child(2)")
Dim Dic As New Dictionary 'Newが必須
Dim i As Integer
For i = 1 To eles(0).Count
Dic.Add eles(0).Item(i).Text, eles(1).Item(i) 'アイテムはオブジェクト
Next i
Dim ele As WebElement
Set ele = Dic("Smith")
Debug.Print ele.Text
End Sub
Get_DriverInfo
Private Sub Get_DriverInfo()
Dim Driver As New ChromeDriver, ele As WebElement
Driver.Get "https://google.co.jp"
Dim info As Dictionary
Set info = Driver.ExecuteScript("return {" & _
"agent: navigator.userAgent," & _
"lang: navigator.userLanguage," & _
"Name: navigator.appCodeName," & _
"Activation: navigator.userActivation.hasBeenActive," & _
"driver: navigator.webdriver," & _
"cookie: document.cookie };")
Debug.Print info("Activation")
Debug.Print info("cookie")
Debug.Print info("driver")
Driver.Quit
End Sub
Get_EleInfo
Private Sub Get_EleInfo()
Dim Driver As New ChromeDriver, ele As WebElement
Driver.Get "https://www.pref.kyoto.jp/kenkoshishin/pdfdown.html"
Set ele = Driver.FindElementByPartialLinkText("飲酒")
Dim info As selenium.Dictionary
Set info = ele.ExecuteScript("return {" & _
"link: this.href," & _
"agent: navigator.userAgent," & _
"lang: navigator.userLanguage," & _
"cookie: document.cookie };")
Debug.Print info("link")
Debug.Print info("agent")
End Sub
SeleniumBasicでダウンロード利用その1 usage_download
SeleniumBasicでダウンロード作業をする際に役立つコードの紹介です。私は、SeleniumBasicで各ホームページにアップされているPDFデータやJPEGデータ等の画像データ(...