chrome driver with seleniumwrapper not working

Artemiss

Gebruiker
Lid geworden
13 feb 2009
Berichten
130
Hello,

A while ago I've written the following macro, which worked at the time.

Code:
Sub GetWOZValues()


Dim bot As New WebDriver
Dim addresses As Range
Dim counter As Integer
Dim elements As Object
Dim wozValue As Single
       
    'open the Chrome browser
    bot.Start "chrome", "<een webadres>"
    bot.Get "/"
    bot.Window.Maximize
    On Error Resume Next
    bot.FindElementByClass("btn--close").Click
    On Error GoTo 0

But now when I run it, it gives me the following error on the line: bot.Start "chrome", "een webadres"
Run-time error '33':
SessionNotCreatedError
session not created: This version of Chrome driver only supports Chrome version 120
Current browser version is 122.0.6261.112 with binary path....
(Driver info: chrome driver = 120.0.6099.71)

I found multiple threads on forums that I should update the driver, so I've downloaded the following new driver from https://googlechromelabs.github.io/chrome-for-testing/#stable:
chromedriver win64 https://storage.googleapis.com/chrome-for-testing-public/122.0.6261.111/win64/chromedriver-win64.zip 200

I've stored it in the SeleniumWrapper folder and unblocked it through the file properties.
When I run the chrome driver from the SeleniumWrapper folder, I get the following:

Starting ChromeDriver 122.0.6261.111 (9d4c1072da62b411b351a38b9ed6214ab236aa7b-refs/branch-heads/6261@{#1015}) on port 9515
Only local connections are allowed.
Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe.
ChromeDriver was started successfully.
(I'm sorry if I'm not formatting this correctly, but I don't how to add this in cmd-window-format)

To me it seems to be the driver for the Chrome browser 122-version, but I'm still getting the same error when I run my Excel macro.
However, in the selenium-Folder there also is a file "QuickTest.vbs" and when I run this Chrome gets opened.

Does anyone know what else I need to do to get this working again through VBA?

Kind regards,

Frauke Stevens
 
Laatst bewerkt:
This is a Dutch forum...
 
En Frauke was vroeger heel goed in berichtjes in het Nederlands schrijven. Blijkbaar heeft ze bij het NTI een schriftelijke cursus Engels gevolgd :).
 
Ik heb hetzelfde meegemaakt en de oplossing hiervoor is de volgende.
Omdat Chrome een update heeft gehad, dient de versie van de Chromedriver ook een update te krijgen.
Die kun je hier vinden.
https://googlechromelabs.github.io/chrome-for-testing/#stable
Selecteer in de regel Chromedriver win64 de link, rechtermuisknop en selecteer
Ga naar https://google....... enz. Die link dus.
Dan ga je naar de map Downloads en pak je Cromedriver-win64.rar uit.
Kopieer in die map chromedriver.exe en kopieer die naar de map
C:\Users\JouwUsername\AppData\Local\SeleniumBasic, overschrijf het bestaande bestand.
Dan werkt het weer totdat Chrome een nieuwe update krijgt.

Ik heb het inmiddels voor elkaar dat in mjn VBA module een controle wordt uitgevoerd of de juiste chromedriver nog wel aanwezig is of dat deze moet worden vervangen. Bij opstarten van Excel workbook wordt die controle uitgevoerd. De code hiervoor is de volgende.

Code:
Private Sub Workbook_Open()
Dim sn() As String, sp() As String

   With CreateObject("WScript.Shell")
      sn = Split(.RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version"), ".")
      
      If Environ$("computername") = "LAPTOP" Then           'naam van de PC
         sp = Split(.Exec("C:\Users\Brammetje\AppData\Local\SeleniumBasic\Chromedriver.exe --version").StdOut.ReadAll, ".")
        Else                                         'dan wordt deze VBA op de vaste PC uitgevoerd'
         sp = Split(.Exec("C:\Users\Bramm\AppData\Local\SeleniumBasic\Chromedriver.exe --version").StdOut.ReadAll, ".")
      End If
   End With
 
   If InStr(sp(0) & sp(1) & sp(2) & sp(3), sn(0) & sn(1) & sn(2)) = 0 Then _
      Msgbox "Chromedriver vervangen"
 
@Bram65

Werkt dit bij jou ook, onafhankelijk van het apparaat (laptop af anders) ?

CSS:
Sub M_snb()
  With CreateObject("WScript.Shell")
    MsgBox .exec(Environ("appdata") & "\Local\SeleniumBasic\Chromedriver.exe --version").stdout.readall
  End With
End Sub
 
Dankjewel.
Wat is dan de waarde van :

CSS:
Sub M_snb()
  Msgbox Environ("appdata")
End Sub
 
C:\Users\Brammetje\AppData\Roaming en dat is dus niet goed want Selenium wordt geinstalleerd in C:\Users\Brammetje\AppData\Local\SeleniumBasic

De code die ik eerder opgaf werkt perfect.
Zonder die code kom je er ook wel achter wanneer geen juiste chromedriver aanwezig is maar dat gaat dan doordat de macro eruit klapt, niet netjes dus. Met mijn code wordt je direct bij opstarten geattendeerd de driver te vervangen, uiteraard alleen wanneer dat nodig is.

Overigens is die code die ik eerder gaf gedeeltelijk tot stand gekomen met behulp van dit forum en gedeeltelijk door mijzelf.
 
Laatst bewerkt:
Dat snap ik.
Ik vroeg me alleen af hoe we, zonder het path 'hard' weer te geven, met 1 regel het juiste pad naar de driver kunnen vinden.

Heb je al eens geprobeerd of dit een correct pad oplevert ?

CSS:
Sub M_snb()
    On error Resume next
    For j = 1 To 36
        Cells(j, 10) = Environ(j)
    Next

   with createobject("wscript.shell")
      for j=1 to 20
         msgbox .specialfolders(j)
     next
   end with
End sub
 
Ik snap wat je bedoelt en heb het nog niet geprobeerd en ga dat eigenlijk ook niet doen zodat mijn workbook met data van de laatste 6 jaar in tact blijft. Mocht je Selenium op jouw systeem installeren kun je het zelf testen. Mijn code werkt goed en voor mij hoeft het niet korter. Overigens tel ik in jouw laatste code 9 regels, een minder dan bij mij.
 
Die laatse code is een manier om te kijken naar systeemgegevens. en heeft helemaal niets met jouw macro te maken.
Maar ik begrijp dat je het niet begrijpt. Dan zijn we klaar.
 
Terug
Bovenaan Onderaan