Gå til innhold

Trykke på en "link" - vb 2005


Anbefalte innlegg

Videoannonse
Annonse

Jaja, jeg er jo ikke helt noob da. Du forstår ikke hva jeg mener. Er så dårlig til å forklare hva jeg mener, men det jeg vil frem til er at den "linken/knappen" man trykker på "skjuler" en link til noe annet, som kan variere. Men jeg vil at ved å trykke på "linken/knappen" så skal den navigere til den "skjulte linken" - som kan variere.

Endret av LeifOlav
Lenke til kommentar
I VB6 er d:

 

wb.document.all("automatiser").Click

 

Viss automatiser = navn på knapp

wb = Webbrowser

9359714[/snapback]

 

Du DglZ3r0 jeg forslår at du ikke prater om ting du ikke vet jeg ;)

 

wb.document.all("automatiser").Click = FEIL det er om det er en knapp som skal har navnet automatiser, dette var ikke snakk om en knapp, dette var en tekst som var linka videre mot en annen side.

Lenke til kommentar
Hvordan gjør man det?

9391158[/snapback]

Rent teknisk varierer dette fra dokument til dokument, men generelt sett kan man bruke flere metoder. Ettersom du har unnlatt å spesifisere nettsiden (nm-bot?), kan vi eksempelvis ta utgangspunkt i følgende HTML-dokument. Bemerk, dette forutsetter at du allerede er kjent med slike markeringspråk.

Klikk for å se/fjerne innholdet nedenfor
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
   <head>
       <title>Testdokument</title>
   </head>
   <body>
       <ul id="meny">
           <li id="main"><a href="hovedside.html">Hovedside</a></li>
           <li id="program"><a href="index.php?side=bruker=myself">Automatiser</a></li>
           <li id="faq"><a href="faq.html">Spørsmål og svar</a></li>
       </ul>
   </body>
</html>

Når denne filen åpnes i nettleserkontrollen, kan en få tilgang til ulike representasjoner av informasjonen, blant annet via WebBrowser1.DocumentText (som returnerer råmaterialet overfor) og WebBrowser1.Document. Sistnevnte inneholder et DOM-objekt (Document Object Model), og er trolig den mest hensiktsmessige fremgangsmåten når en benytter et objektorientert programmeringsspråk.

 

Det blir muligens litt mye terminologi nå, men en kan likegjerne lære det først som sist. I DOM-oppsettet beskrives dokumentet ovenfor med datastrukturen tre som er en hierarkisk modell (lik en graf) der hvert element/node er knyttet til andre elementer, hvor elementer innunder elementet X kalles barn og elementer over X kalles forelder/foreldre. Likså i et tre finner en én node som begynner dokumentet og ikke har noen foreldre (roten), vanlige greiner (både foreldre og barn) samt blader (som ikke besitter noen barn).

 

Før vi begynner, må vi konstatere hva vi faktisk er ute etter. I dette eksempelet vil vi forsøke å finne lenken som inneholder URI-en index.php?side=bruker=myself og/eller og teksten Automatiser. I treet er dette elementet barn av html, body, ul og li (den andre). Vi kan bruke denne informasjonen til å finne elementet vi er ute etter.

 

Den første fremgangsmåten er å "navigere" seg frem til objektet via stien jeg nevnte ovenfor - en går altså fra roten og nedover en bestemt retning til en finner a-elementet. I VB kan dette gjøres på følgende OOP-måte:

'          html -> body -> ul (første) -> li (nummer 2) -> a (første)

Dim Link As HtmlElement = WebBrowser1.Document.Body.GetElementsByTagName("ul")(0). _

GetElementsByTagName("li")(1).GetElementsByTagName("a")(0)

Om en har tilgang til det, er også XPath en mulighet (men jeg lar det ligge nå, ettersom kontrollen i VB.NET ikke støtter det direkte).

 

En annen, muligens enklere metodikk, er å SØKE etter elementet via den informasjon vi allerede innehar, så som type og innhold, og ikke (bare) lokalisasjon. Da kan vi anvende en FOR EACH-løkke:

Dim Link As HtmlElement

 

' Gå gjennom alle LINK-elementer (kan utvides ved å bruke .All)

For Each Link In WebBrowser1.Document.Links

' Bruk tekstinnhold til å finne elementet (fjern en av disse)

    If Link.InnerText.ToLower = "automatiser" Then

        Exit For

    End If

' Bruk attributtinnhold (fjern en av disse)

    If Link.GetAttribute("href").ToLower.StartsWith("index.php?side=bruker") Then

        Exit For ' Vi er ferdige

    End If

Next

Når du så endelig ender opp med det riktige elementet, kan du navigere til nettstedet ved hjelp av NAVIGATE-metoden:

WebBrowser1.Navigate(Link.GetAttribute("href"))

Lykke til! :)

Endret av aadnk
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å
×
×
  • Opprett ny...