Gå til innhold

Hva må gjøres når VB ikke finner det den ser ette


Anbefalte innlegg

Hei. :blush:

 

Holder på å lager mitt eget program, og har komt over ett problem nå. Jeg har sagt at visual basic skal sette inn tekst i en tekstbox på ei webside, men det er ikke alltid den textboxen er "tilgjengelig" på den siden.

 

 

WebBrowser1.Document.All("o").SetAttribute("value", TextBox1.Text)

'setter inn tekst i "boksen"

 

 

Dette er koden jeg brukte. Når visual basic leter etter denne textboxen til å sette inn teksten og ikke finner den, lukkes programmet automatisk. Hva kan jeg gjøre for å unngå dette, og få programmet til å heller prøve å gjøre det omigjen hvert f.eks 2 sekund? :thumbup:

 

Mvh. Leif :w00t:

Lenke til kommentar
Videoannonse
Annonse

name="o"

 

Ja jeg er sikker på at det er riktig id på boxen ;)

Er på riktig side når jeg prøver. Når visual basic skal sette inn teksten i boksen lukker bare programmet seg. Det jeg vil skal skje er at VB prøver å sette inn teksten i boksen helt til det går liksom. Sånn at når den tekstboxen kommer så blir teksten satt inn av VB og finito :)

Lenke til kommentar
dim a

for a = 1 to 5

webbrowser1.document.all("o").setattribute("value",textbox1.text)

next

if webbrowser1.document.all("click").invokemember("click") then

for a = 5 to 5

end if

har ingen garanti på at dette skal virke men du kan prøve.

hvis ikke så kan du prøve og flytte next under end if

hvis du det ikke går på fem forsåk kan du prøve else

dim a

for a = 1 to 5 as string

webbrowser1.document.all("o").setattribute("value",textbox1.text)

next

if webbrowser1.document.all("click").invokemember("click") then

for a = 5 to 5

else

for a = 1 to 5

end if

next

next

Endret av Martin-Vb
Lenke til kommentar

Feilmeldinga du får kan iallfall komme av at du er for rask på labben når du klikker, fordi websiden ikke er kommet endelig inn i browser eller fordi som allerede nevnt her, id'en som søkes ikke finnes på websiden. Her er et eksempel på hvordan man eventuelt kan takle dette:

 

Sjekk at websiden er i browser:

Private Sub WebBrowser1_ProgressChanged(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserProgressChangedEventArgs) Handles WebBrowser1.ProgressChanged
       If WebBrowserReadyState.Complete Then Label1.text = "Complete"
End Sub

Når Label1.text får verdien Complete, kan du trykke på knappen som setter inn data på websiden.

 

Sjekk at id'en er på websiden:

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i
For i = 0 To (WebBrowser1.Document.All.Count - 1)
If WebBrowser1.Document.All.Item(i).Name = "o" Then
WebBrowser1.Document.All("o").SetAttribute("value", TextBox1.Text)
End If
Next
End Sub

Lenke til kommentar

Tusen hjertelig takk backup :blush:

 

 

Hvordan kan jeg få VB til å gjenta prosessen helt til den finner det den leter etter? Altså oppdatere siden og søke på nytt helt til programmet klarer å sette inn det jeg vil i tekstboksen?

 

Er det mulig å lage en label som sier at VB den ikke fant det den lette etter?

 

 

 

 

Sorry for maset :innocent: Men har trossalt lært meg mye nytt i det siste nå takket være dere :love:

Lenke til kommentar

Her har du noe som kanskje kan brukes:

 

Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
       Dim i, key as string
       key = TextBox2.Text
       For i = 0 To (WebBrowser1.Document.All.Count - 1)
           If WebBrowser1.Document.All.Item(i).Name = key Then
               WebBrowser1.Document.All(key).SetAttribute("value", TextBox1.Text)
               Label2.Text = "Yes, found"
               Exit Sub
           End If
       Next
       Label2.Text = "Not found"
   End Sub

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
       Timer1.Interval = 1000
       Timer1.Enabled = True
   End Sub

Sett en timer1 kontroll på formen, en textbox2 kontroll og en button3 kontroll. I textbox2 skriver du inn id'en du vil søke på. Så klikker du button3 og det hele er i gang. Label2 gir found/not found. Tast inn nye verdier i textbox1 og textbox2 og det hele går automatisk hele tiden. Hvis du stoppe det hele, sett inn en button4 der du legger inn: timer1.enabled = false. For å starte igjen, klikk button3. Husk først å sjekke at en webside er helt kommet inn webbrowser1.

Endret av backup
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...