Italian [RISOLTO] UltimateWebView - problema di rilevamento oggetto

sirjo66

Well-Known Member
Licensed User
Longtime User
Come già accennato su un altro posto ho iniziato ad usare la libreria UltimateWebView e ovviamente inizio a scontrarmi con i primi problemi.

Ho un pezzo di codice dove mi metto in attesa che la pagina si carichi e che appaia un determinato oggetto di cui so il suo ID.
Sebbene l'oggetto appare, e il codice riesce a rilevarlo, non riesco ad entrare nella riga IF (secondo me) scritta correttamente.
Perchè ???

B4X:
    ' carico la pagina
    uwv.LoadUrl("https://www.passaportonline.poliziadistato.it/LogInAction.do?codop=loginCittadino")
    ' aspetto il caricamento completo
    Wait For uwv_PageFinished(Url As String)

    ' simulo il click sul bottone "Entra con SPID"   
    uwv.ExecuteJavaScript("document.querySelector('form[name=""spid_idp_access""]').submit();")

    ' aspetto che nella pagina appaia l'oggetto con id "cosaspid"
    ' ToDo: aggiungere timeout
    Do While True
        ' eseguo codice JavaScript
        ' se l'elemento è presente ritorna 'y' altrimenti ritorna 'n'
        uwv.ExecuteJavaScript2("(function(){ if (document.getElementById('cosaspid') == null) return 'n'; else return 'y'; })()")
        Wait For uwv_ExecuteJavaScriptResult(Result As String)
        ' su Result ho il risultato
        If Result = "y" Then
            ' sebbene, eseguendo anche il debug step-by-step, si vede che Result ad un certo punto valga "y",
            ' qui dentro non entra mai.   Perchè ??
            Exit
        End If
        Sleep(400)
    Loop

Thanks
 
Last edited:

Elric

Well-Known Member
Licensed User
Se ho capito bene, Result prende il valore "y" (verificato anche con un Log()?)

Hai provato a invertire la condizione if?

B4X:
If "y" = Result then
 

drgottjr

Expert
Licensed User
Longtime User
come con l'altro tuo post, non vedo il problema. pensa bene quello che succede al pagefinished. si "alza" 2 volte... il tuo codice ha da fare una cosa la prima volta, ed un'altra cosa la seconda. non conosco ultimatewebview; ho utilizzato la vecchia webviewextras nel mio essempio allegato. suppongo che l'atra funzione
 

Attachments

  • sirjo66.png
    51 KB · Views: 155
  • sirjo.zip
    7.9 KB · Views: 193

sirjo66

Well-Known Member
Licensed User
Longtime User
Log(Result.Length)

Grande !!!!! Hai trovato il problema, io ci stavo sbattendo la testa.
Facendo un Result.Lenght il risultato è 3
Praticamente nella stringa di risposta, oltre al carattere n oppure y ci sono anche le virgolette prima e dopo

Risolto con
B4X:
        If Result = """y""" Then
            Exit
        End If

Thanks !!!
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Grazie mille del tuo interessamento,
anche a me con il WebView funzionava, ma purtroppo in questo progetto non posso usare il WebView come hai letto sull'altro post.
Alla fine era solo un problema di virgolette, risolto tutto grazie mille !!
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…