WebView2 : come accedere ai documenti?

di il
69 risposte

69 Risposte - Pagina 5

  • Re: WebView2 : come accedere ai documenti?

    20/11/2023 - StefanoBon ha scritto:


    in pratica il mio programma si ferma quando isbusy diventa false  per la prima volta…

    Dai che ci sei quasi

    isBusy viene messo a True e poi quando WebView ha finito di caricare la pagina chiama l'evento NavigationCompleted che mette isBusy a False e quindi il ciclo Do-Loop si interrompe e il programma prosegue, ma poi, prima di caricare la nuova pagina, se non metti di nuovo isBusy a True, dentro al loop non ci entrerà mai e quindi chiama subito la riga successiva senza attendere il caricamento completo della pagina

  • Re: WebView2 : come accedere ai documenti?

    Ma ho provato a rimettere isBusy a true , ma non mi funziona perche isBusy non viene messo a false!

  • Re: WebView2 : come accedere ai documenti?

    Il programma mi rimane fermo su

    https://www.google.it/search?q= + B00ZWOUH4S

    come se non eseguisse le istruzioni successive!

  • Re: WebView2 : come accedere ai documenti?

    
    Imports System.Reflection.Metadata
    Imports System.Security.Policy
    Imports System.Windows.Forms.VisualStyles
    Imports System.Windows.Forms.VisualStyles.VisualStyleElement
    Imports Microsoft.Web.WebView2.Core
    Imports OfficeOpenXml.FormulaParsing
    Imports System
    Imports System.Xml
    Imports HtmlAgilityPack
    
    
    Public Class Form1
        Dim isBusy As Boolean
        Dim i As Integer
    
    
    
        Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    
            Read_Sheet()
            Await WebView21.EnsureCoreWebView2Async()
    
        End Sub
    
        Private Async Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
            Dim Ricerca As String
            'Dim Prova As String
    
            'SKU = "B00ZWOUH4S"
    
            isBusy = True
    
    
            Ricerca = "https://www.google.it/search?q=" + SKU
            WebView21.Source = New Uri(Ricerca)
    
            Do While isBusy
                Application.DoEvents()
                Threading.Thread.Sleep(100)
            Loop
    
    
            Dim Link As String = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');")
            Link = Replace(Link, "'", "")
            Link = Replace(Link, Chr(34), "")
            Url_Amazon = Link
    
            isBusy = True
    
            WebView21.Source = New Uri(Url_Amazon)
    
            Do While isBusy
                Application.DoEvents()
                Threading.Thread.Sleep(100)
            Loop
    
            Prezzo_Amazon = Await WebView21.ExecuteScriptAsync("document.getElementById('corePrice_feature_div').getElementsByTagName('span')[1].innerText;")
    
        End Sub
    
    
        Private Sub WV_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView21.NavigationCompleted
            isBusy = False
        End Sub
    
        Private Async Sub WebView21_Click(sender As Object, e As EventArgs) Handles WebView21.Click
    
        End Sub
    
    End Class
  • Re: WebView2 : come accedere ai documenti?

    Se metto un breakpoint su  Prezzo_Amazon ,  e faccio il debug , non ci passa!

  • Re: WebView2 : come accedere ai documenti?

    Come mai     Private Sub WebVView21_NavigationCompleted non viene chiamato per la seconda volta ?

  • Re: WebView2 : come accedere ai documenti?

    Più di questo non saprei dirti, mi dispiace, come ti ho già detto non uso WebView2 proprio per la sua complessità, io personalmente preferisco Selenium abbinato a Chrome

  • Re: WebView2 : come accedere ai documenti?

    Se eseguo all'interno  di  Private Async Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown   solo il codice riportato sotto

    la pagina che mi interessa mi viene caricata e l'evento WebVView21_NavigationCompleted viene chiamato

    a questo punto  dovrei chiamare 

    Prezzo_Amazon = Await WebView21.ExecuteScriptAsync("document.getElementById('corePrice_feature_div').getElementsByTagName('span')[1].innerText;")

    in un'altra funzione Async ,

    Sirjo hai qualche idea ?

    isBusy = True
    
    Ricerca = "https://www.google.it/search?q=" + SKU
    WebView21.Source = New Uri(Ricerca)
    
    Do While isBusy
        Application.DoEvents()
        Threading.Thread.Sleep(100)
    Loop
    
    Dim Link As String = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');")
    Link = Replace(Link, "'", "")
    Link = Replace(Link, Chr(34), "")
    Url_Amazon = Link
    
    
    WebView21.Source = New Uri(Url_Amazon)
  • Re: WebView2 : come accedere ai documenti?

    Niente da fare ho provato a chiamare 

    Prezzo_Amazon = Await WebView21.ExecuteScriptAsync("document.getElementById('corePrice_feature_div').getElementsByTagName('span')[1].innerText;")

    in un altra async sub in WebVView21_NavigationCompleted  dopo il caricamento della pagina , ma Prezzo_Amazon é ancora NULL

    si effettivamente il funzionamento di  WebView21 sembra complesso..

    GRAZIE comunque per l'aiuto.

  • Re: WebView2 : come accedere ai documenti?

    Ce l ho fatta finalmente

    amazon aveva cambiato la pagina!

    GRAZIE!

    
    Imports System.Reflection.Metadata
    Imports System.Security.Policy
    Imports System.Windows.Forms.VisualStyles
    Imports System.Windows.Forms.VisualStyles.VisualStyleElement
    Imports Microsoft.Web.WebView2.Core
    Imports OfficeOpenXml.FormulaParsing
    Imports System
    Imports System.Xml
    Imports HtmlAgilityPack
    Imports System.Linq.Expressions
    
    
    Public Class Form1
        Dim isBusy As Boolean
        Dim i As Integer
        Dim Delay As Integer
    
    
        Private Async Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    
            Read_Sheet()
            Await WebView21.EnsureCoreWebView2Async()
        End Sub
    
        Private Async Sub Form1_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
            Dim Ricerca As String
    
    
            'SKU = "B00ZWOUH4S"
    
            isBusy = True
    
    
            Ricerca = "https://www.google.it/search?q=" + SKU
    
            WebView21.Source = New Uri(Ricerca)
    
            Do While isBusy
                Application.DoEvents()
                Threading.Thread.Sleep(100)
            Loop
    
    
            Dim Link = Await WebView21.ExecuteScriptAsync("document.getElementById('rso').getElementsByTagName('a')[0].getAttribute('href');")
            Link = Replace(Link, "'", "")
            Link = Replace(Link, Chr(34), "")
            Url_Amazon = Link
    
            isBusy = True
    
            WebView21.Source = New Uri(Url_Amazon)
    
        End Sub
    
    
        Private Sub WebVView21_NavigationCompleted(sender As Object, e As CoreWebView2NavigationCompletedEventArgs) Handles WebView21.NavigationCompleted
            isBusy = False
            i = i + 1
            If (i = 2) Then
                Estract_Price()
            End If
    
        End Sub
    
        Private Async Sub Estract_Price()
    
            Prezzo_Amazon = Await WebView21.ExecuteScriptAsync("document.getElementById('usedBuySection').getElementsByTagName('span')[1].innerText;")
    
        End Sub
    
        Private Async Sub WebView21_Click(sender As Object, e As EventArgs) Handles WebView21.Click
    
        End Sub
    
    
    End Class
Devi accedere o registrarti per scrivere nel forum
69 risposte