【EXCEL VBA】Selenium VBAで起動済みChromeを操作したい

コードを修正する毎に「Chromeを新規起動し、ログインからやり直し」「Chromeを新規起動し、操作対象画面まで遷移する」など、頭からスクリプトを実行していませんか?たかだか数秒かもしれませんがイライラしますよね。また、ログインを何度も行うため不正操作を疑われるのではないかとドキドキすることもあります。Selenium VBAで起動済みChromeを操作できれば、このような懸念はなくなります。今回は、Selenium VBAで起動済みChromeを操作する方法を紹介します。

事前準備

  • テンポラリフォルダを作成する。場所は任意です。Chromeのユーザデータが保存されます。
      例:D:\tmp\chrome_vba
  • Chromeのショートカットを作成する。–user-daa-dirには、先ほど作成したテンポラリフォルダをしてしてください。
      “C:\Program Files (x86)\Google\Chrome\Application\chrome.exe” -remote-debugging-port=9222 –user-data-dir=D:\tmp\chrome_vba
  • 先ほど作成したショートカットでChromeを起動しておく

サンプルプログラム

ポイントは、dr.SetCapability “debuggerAddress”, “127.0.0.1:9222” です。

Option Explicit

Sub sample()
    Dim dr As New Selenium.WebDriver
    Dim el As WebElement
    
    dr.SetCapability "debuggerAddress", "127.0.0.1:9222"
    dr.Start "chrome"
    dr.Get "https://www.coingecko.com/ja"
    
    Dim r As Range
    Set r = ThisWorkbook.Worksheets(1).Range("A1")
   
    For Each el In dr.FindElementsByXPath("//div[@class='coingecko-table']//tbody/tr")
      r.Value = el.FindElementByXPath(".//td[contains(@class,'coin-name')]").Attribute("data-sort")
      r.Offset(0, 1).Value = el.FindElementByXPath(".//td[contains(@class,'price')]/span").Text
      
      Set r = r.Offset(1, 0)
    Next
End Sub
タイトルとURLをコピーしました