Condividi:        

Selenium 4.6.0

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Selenium 4.6.0

Postdi Raffaele53 » 14/07/26 10:19

Ciao a tutti, sapete come usare tale applicazione.
Ho cercato in rete (purtroppo per me sono tutti siti in Inglese), comunque non ho trovato una guida a riguardo.
Da quando Chrome si è aggiornato (versione oltre 150.0...7871.115), non riesco più a trovare i driver giusti. Ho notato che è uscita la versione 4.6.0 e mi piacerebbe provarla dato che i driver si aggiornerebbero dalla rete automaticamente e abbia pure la funzionalita d'usare Mozilla. Grazie mille
Raffaele53
Utente Senior
 
Post: 116
Iscritto il: 03/10/24 13:06

Sponsor
 

Re: Selenium 4.6.0

Postdi Anthony47 » 14/07/26 23:12

Per Chrome vers. 115 e superiori le informazioni per l'aggiornamento dovrebbero essere in questo post: viewtopic.php?f=26&t=112225#p664966

Dalla pagina lì citata (https://googlechromelabs.github.io/chrome-for-testing/), cerchi l'url del "chromedriver" che ti interessa, lo copy (stranamente non viene presentato con link) e lo usi per scaricare il file zippato, unzippi il file e copy il "chromedriver.exe" nella directory di installazione di SeleniumBasic

Per quello che ne so, solo la versione 2 di Selenium ha un porting vba.

Tieni anche presente che per mio uso ho sviluppato un codice che auto-aggiorna il driver, ma esso e' personalizzato e testato per il chromedriver a 32 bit (quando installai Selenium, novembre 2021, non esisteva una versione a 64 bit, e successivamente non ho mai aggiornato la mia installazione); se tu hai la versione 64bit devi cambiare qualche spezzone. Il codice completo, da inserire in un modulo standard vba vuoto (in modo che le Declare iniziali siano in testa):
Codice: Seleziona tutto
#If VBA7 Then
    Private Declare PtrSafe Function URLDownloadToFile Lib "urlmon" _
        Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
        ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#Else
    Private Declare Function URLDownloadToFile Lib "urlmon" _
    Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, _
    ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
#End If


Sub UpdateChromeDriver()
'Thanks also to Gemini
    Dim ShellP As Object, FSO As Object
    Dim ChromeVersion As String, DownloadUrl As String, SeleniumPath As String
    Dim zipPath As String, Ret As String
'
Set ShellP = CreateObject("WScript.Shell")
Set FSO = CreateObject("Scripting.FileSystemObject")

' 1. Individua il percorso di SeleniumBasic (di norma in AppData)
SeleniumPath = Environ("LocalAppData") & "\SeleniumBasic\"
If Not FSO.FolderExists(SeleniumPath) Then
    ' Percorso alternativo se installato per tutti gli utenti
    SeleniumPath = Environ("ProgramFiles") & "\SeleniumBasic\"
End If
'
'Crea eventualmente su subdirectory ZipArea:
If Not FSO.FolderExists(SeleniumPath & "ZipArea") Then
    ' Se non esiste, la crea
    FSO.CreateFolder (SeleniumPath & "ZipArea")
    Beep
    Debug.Print "Percorso " & SeleniumPath & "ZipArea: CREATO"
Else
    ' Se esiste già, prosegue con il codice
    Debug.Print "Percorso " & SeleniumPath & "ZipArea: esiste già"
End If

'
' 2. Legge la versione principale di Chrome installata nel registro di sistema
On Error Resume Next
ChromeVersion = ShellP.RegRead("HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon\version")
If ChromeVersion = "" Then
    ChromeVersion = ShellP.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Google Chrome\version")
End If
On Error GoTo 0

If ChromeVersion = "" Then
    MsgBox "Impossibile trovare la versione di Google Chrome nel registro" & _
       vbCrLf & "Aggiornare manualmente Selenium ChromeDriver", vbCritical
    Exit Sub
End If

' Estrae la versione "Major" (es. "150" da "150.0.7871.115")  EVOLUZIONE FUTURA
Dim majorVersion As String
majorVersion = Split(ChromeVersion, ".")(0)

' 3. Costruisce l'URL per scaricare il driver corretto (Milestone API di Google)
DownloadUrl = "https://storage.googleapis.com/chrome-for-testing-public/" & ChromeVersion & "/win32/chromedriver-win32.zip"
zipPath = SeleniumPath & "ZipArea\"  'chromedriver.zip"
'
'Scarica i Driver.zip:
Ret = GetWebFile(DownloadUrl, zipPath)
If Len(Ret) < 3 Then
    MsgBox ("Impossibile scaricare il nuovo Chromedriver" & vbCrLf & DownloadUrl & vbCrLf _
       & "Aggiornare manualmente Selenium ChromeDriver")
       Exit Sub
End If
'
'Espandi .zip:
Call FileDeZip(Ret, zipPath)
'mySplit = Split("\ " & Ret, "\", , vbTextCompare)
On Error Resume Next
    ShellP "taskkill /f /im chromedriver.exe", vbHide  '******
    Debug.Print "TaskKill, " & Err.Description
On Error GoTo 0
'Sostituisci driver:
On Error Resume Next
FSO.copyfile zipPath & "\chromedriver-win32\chromedriver.exe", SeleniumPath & "chromedriver.exe", True
If Err.Number = 0 Then
    MsgBox "ChromeDriver aggiornato con successo per la versione " & ChromeVersion, vbInformation
Else
    MsgBox ("Impossibile sostituire ul nuovo Chromedriver" & vbCrLf & DownloadUrl & vbCrLf _
       & "Aggiornare manualmente Selenium ChromeDriver")
End If
On Error GoTo 0
End Sub


Sub FileDeZip(ByVal fName As Variant, dzPath As Variant)
'Dim ZipFile As String, OutPath As String, ZipPath As String
'
Set sh = CreateObject("Shell.Application")
    sh.Namespace(dzPath & "").CopyHere sh.Namespace(fName).Items, 16          '16=Overwrite same name
Set sh = Nothing
End Sub


Function GetWebFile(ByVal myUrl, ByVal myPath As String) As Variant
'byAnthony, ritorna Image Path & name OPPURE 0 se fail
Dim PathNName As String, URL As String
Dim mySplit, Resp As Long
mySplit = Split(myUrl, "/")
PathNName = myPath & mySplit(UBound(mySplit))
Resp = URLDownloadToFile(0, myUrl, PathNName, 0, 0)
If Resp = 0 Then
    GetWebFile = PathNName
    Exit Function
Else
    GetWebFile = "0"
End If
End Function


Quando sei pronto devi lanciare la Sub UpdateChromeDriver
Un doveroso ringraziamento a Gemini :D , che mi ha suggerito come controllare le versioni di Chrome e come ottenere alcuni parametri di ambiente

keyw
Selenium SeleniumBasic driver updating

Avatar utente
Anthony47
Moderatore
 
Post: 19711
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Selenium 4.6.0

Postdi Raffaele53 » 15/07/26 08:50

Grazie Anthony, ultimo mio aggiornamento Chrome 150.0.7871.125 e dal Link ho scaricato 150.0.7871.124/win64/chromedriver-win64.zip. Ho provato il Tuo SELENIUM_TEST.xlsm, funziona sia con Chrome e pure con Edge. Mi rimane solo di capire cosa sia quel Selenium 4.6.0. Un saluto
Raffaele53
Utente Senior
 
Post: 116
Iscritto il: 03/10/24 13:06

Re: Selenium 4.6.0

Postdi Anthony47 » 15/07/26 23:04

Selenium e' un ambiente pensato per testare applicazioni web, una cosa molto seria e molto importante in un mondo in cui il web la fa da padrone. Ovviamente queste cose serie non si fanno col vba, ma con altri linguaggi piu' potenti (Python, C#, Java e altri).
SeleniumBasic, detto in parole povere, è una alternativa limitata all'ambiente Selenium, di cui sfrutta l'interfaccia standard verso il browser resa disponibile dal "driver", pensata per dare al VBA una via di evoluzione dopo la cessazione di InternetExplorer (pilotabile tramite l'estensione Microsoft HTML Object Library).
Come detto SeleniumBasic e' fermo al 2016; la sua evoluzione è l'ambiente "SeleniumVBA", che (tra l'altro) supera la necessità di aggiornare manualmente il "driver", grazie alla presenza di una Classe specifica per la gestione del WebDriver.
Di questo SeleniumVBA non ho ancora fatto, per pigrizia :D , nessuna valutazione, anche se si presenta come facile da integrare e pienamente compatibile con SeleniumBasic
Avatar utente
Anthony47
Moderatore
 
Post: 19711
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Selenium 4.6.0":


Chi c’è in linea

Visitano il forum: Nessuno e 23 ospiti