Opgelost Is de juiste ChromeDriver aanwezig

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

Bram65

Gebruiker
Lid geworden
25 feb 2023
Berichten
111
Beste,

Wanneer ik een Chrome-website scrape doe ik dat vanuit VBA.
Daarvoor dien je ook Selenium geinstalleerd te hebben incl. de juiste Chromedriver.

Meestal moet na een update van Google-Chrome, ook de Chromedriver vervangen worden.
Wanneer ik mijn workbook opstart controleer ik of de Chromedriver nog de juiste is tov de Chrome-versie.
Dat duurt zo'n 15 seconden.
Ik doe dat op deze volgende manier maar kan dit niet sneller?

Code:
Dim Bot As New ChromeDriver

   On Error GoTo DriverVervangen                                                                                         
   With Bot
      .AddArgument ("headless")                                                                                         
      .AddArgument "window-size=1920,1080"
      .Get "https://www.google.nl/advanced_search?hl=nl"
      GoTo DriverOke

DriverVervangen:
      Msgbox "De Chromedriver dient vervangen te worden"
      
DriverOke:
      .Quit
   End With
 
Na veel zoeken heb ik het opgelost en de tijd teruggebracht tot een fractie van 1 seconde.
Voor hen die het interesseerd,

Code:
Private Sub Workbook_Open()
Dim oShell As Object, SecOmgezet() As String
Set oShell = CreateObject("wscript.shell")

   S = CreateObject("WScript.Shell").RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version")
   SecOmgezet = Split(S, ".")
   S = SecOmgezet(0) & SecOmgezet(1) & SecOmgezet(2)
  
   S2 = "C:\Users\Brammetje\AppData\Local\SeleniumBasic\Chromedriver.exe"
   S2 = oShell.Exec(S2 & " --version").StdOut.ReadAll
   SecOmgezet = Split(S2, ".")
   S2 = SecOmgezet(0) & SecOmgezet(1) & SecOmgezet(2) & SecOmgezet(3)
  
   If InStr(S2, S) = 0 Then Msgbox "De ChromeDriver dient vervangen te worden"
end sub
 
Het is niet consistent een objectvariabele te maken en die later niet te gebruiken.
Zonder objectvariabele loopt het ook prima.
Kun je ook zo schrijven:

CSS:
Sub M_snb()
  With CreateObject("WScript.Shell")
     sn = Split(.RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version"), ".")
     sp = Split(.Exec("C:\Users\Brammetje\AppData\Local\SeleniumBasic\Chromedriver.exe --version").StdOut.ReadAll, ".")
   End With
 
   If InStr(sp(0) & sp(1) & sp(2) & sp(3), sn(0) & sn(1) & sn(2)) = 0 Then MsgBox "De ChromeDriver dient vervangen te worden"
End Sub
 
Getest en idd, klopt en kan dus ook.
Ik heb inmiddels mijn oplossing vervangen door deze code, waarvoor dank.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan