Quando utilizzi l'oggetto WebBrowser, viene simulato il browser “Internet Explorer versione 7”, un prodotto del 2006, quindi un pochino obsoleto, e quindi è normale che non ti carichi delle pagine o non le visualizza correttamente.
Aggiungi questo codice al tuo progetto:
<System.Runtime.CompilerServices.Extension()> _
Public Function InitIE11(WB As System.Windows.Forms.WebBrowser) As String
WB.ScriptErrorsSuppressed = True
Try
' Computer\HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION
Dim VersionCode = 11001 ' IE11
Dim Root As String = "HKEY_CURRENT_USER\"
Dim AppName = My.Application.Info.AssemblyName
Dim Key As String = "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION"
Dim SubKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(Key)
If SubKey Is Nothing Then
' chiave non trovata, tento di crearla
SubKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(Key)
If SubKey Is Nothing Then
Return "Impossibile creare la voce di registro per il WebBrowser"
End If
End If
Dim CurrentSetting As String = CStr(SubKey.GetValue(AppName & ".exe"))
If CurrentSetting Is Nothing OrElse CInt(CurrentSetting) <> VersionCode Then
#If DEBUG Then
Microsoft.Win32.Registry.SetValue(Root & Key, AppName & ".vshost.exe", VersionCode)
#End If
Microsoft.Win32.Registry.SetValue(Root & Key, AppName & ".exe", VersionCode)
End If
Catch ex As Exception
Return "Exception: " & ex.Message
End Try
Return ""
End Function
Nell'evento Form_Load dovrai chiamare quindi questa routine controllando la stringa di risposta.
Se la stringa è vuota è tutto ok, sennò conterrà il messaggio di errore
Io l'ho definita come un estensione, quindi puoi chiamarla con
Dim Risultato As String = WebBrowser1.InitIE11()
oppure togli la definizione di “estensione” e la chiami con
Dim Risultato As String = InitIE11(WebBrowser1)
Con questa chiamata il WebBrowser andrà a simulare il “Internet Explorer versione 11”, decisamente più recente e più compatibile con le pagine web più recenti.
Puoi eventualmente sostituire la riga
Dim VersionCode = 11001 ' IE11
con
Dim VersionCode = 12001 ' Edge
e andrai a simulare Internet Edge, ma dalle prove che ho fatto non ho trovato grandi differenze
Io utilizzo intensamente l'oggetto WebBrowser nei miei programmi, per l'automazione di inserimento dati nelle pagine web.
Da un po' di tempo però il WebBrowser non riesce a visualizzare certe pagine web, soprattutto quelle costruite con il React e quindi per alcuni programmi ho dovuto cambiare sistema e quindi utilizzo Selenium WebDriver