WebView2 : come accedere ai documenti?

di Jan il
69 risposte

69 Risposte - Pagina 3

  • Come ti ho detto devi conoscere meglio HTML e JavaScript

    ad esempio, in JavaScript ottieni il link con:
    document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');

    Dim Link = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');").ToString()
  • Con libreria  Agility Pack

    Ho provato a scrivere l'xpath

    Ma non riesco a capire il criterio per raggiungere href =

  • Non uso Xpath perchè preferisco altri sistemi, per cui non saprei dirti

    HTML Agility Pack è molto comoda per l'analisi del codice HTML ma si ferma lì, nel senso che non fa altro, non puoi ad esempio interagire con gli oggetti, simulare il click e altre cose che invece puoi fare con il WebView2 e JavaScript injection

  • In effetti il tuo metodo sembra più comprensibile

    GRAZIE!

  • Ho provato a compilare il tuo comando

    mi dice :


    Errore    BC36930    'Con 'Await' il tipo String deve disporre di un metodo GetAwaiter appropriato.    

    non riesco a capire il motivo…

    Dim Link = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');").ToString()
  • Come ti dicevo ti mancano le basi della programmazione (non offenderti ma è così)

    La riga te l'ho scritta al volo senza provarla, era solo per darti uno spunto, poi devi capire tu cosa fa la riga a adattarla alle tue esigenze, non possiamo sempre darti la pappa pronta, la soluzione è semplicissima

    Dim Link As String = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');")
  • Io ho cercato dapertutto GetAwaiter ma proprio non riesco a capire il motivo dell'errore..

    Dim Link As String = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');")
  • Link é un tipo stringa ed é chiaro che non ha un metodo GetAwaiter 

    oltretutto su Internet non viene spiegato come funziona GetAwaiter  in Visual Basic!

  • Ho capito adesso , hai tolto .ToString ()

    avevo fatto anch'io questa prova ma dato che link mi risultava NULL pensavo che fosse un azione sbagliata…

    forse sto sbagliando lo script ?

  • Ah no, facevo del casino …!

    sono riuscito a estrarre questo benedetto URL!

    GRAZIE ANCORA!

  • ho provato con 
    
    Prezzo_Amazon = Await WebView21.ExecuteScriptAsync("document.getElementById('corePrice_feature_div').getElementsByTagName('span class[2]');")
    
    ma mi da NULL!
  • getElementsByTagName('span class[2]')

    questa parte è sbagliata

    per fare le prove senza diventare matto utilizza il browser, una volta che hai fatto “ispeziona”, in basso trovi la sezione “console” e lì puoi digitare e provare tutto quello che vuoi, se ad esempio scrivi

    document.getElementById('corePrice_feature_div')

    e dai invio vedrai che lui riesce a ricavarsi l'elemento
    Da lì aggiungi le tue prove fino a ricavarti quello che ti serve, ad esempio:

    document.getElementById('corePrice_feature_div').getElementsByTagName('span')[1].innerText 
  • Non capisco dove devo digitare il codcie nella console !

    nella barra dove c'é di fianco il simbolo dell'occhio ) ?

    di fianco ci sono diverse opzioni…

    document.getElementById('corePrice_feature_div')
  • Usa Chrome e vai alla pagina interessata
    Fai click destro sul prezzo sulla destra e scegli “ispeziona”
    In basso ti si apre una sezione che si chiama DevTools dove vedi il codice HTML della pagina stessa.
    Come vedi nell'immagine allegata c'è il tab “Console”
    Cliccaci sopra e ti apparirà la finestra relativa e il cursore dove scrivi quello che vuoi

    immagine: https://www.sirjo.com/immagine.png

Devi accedere o registrarti per scrivere nel forum
69 risposte