Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 1953
Hei.

jeg programmerer i VB.net 2005, og har ett lite problem med webbrowseren.
Problemet mitt er at jeg har lyst til å trykke på denne knappen.

<div class="action button">
<input type="submit" class="l" value="Logg inn" />
</div>

Men finner ikke ut ossen jeg gjør det. har prøvd mange forskjellige metoder.
pleier å bruke denne metoden,

WB.Document.All("submit").InvokeMember("click")

men den funker ikke på den koden der.
hvis noen lurer så er det en logg inn knapp jeg skal trykke på.

også lurer jeg på en annen ting.
er det noen som helst mulighet for å få Webbrowseren til å ikke laste bilder?

Hvis det er noe mer dere trenger å vite så bare spør.

Takker for svar

Edit: Skriveleif
Sist endret av DJ Aerobie; 29. januar 2008 kl. 00:28.
m0b
m0b's Avatar
DonorAdministrator
Skal du sende informasjon til System.Windows.Form-formen, er det det som er poenget her, eller er det en HTTP POST du skal sende til siden? Dette var et veldig merkelig stilt spørsmål. Forklar på et forståelig vis. Er "webbrowseren" en WebBrowser-Control?

Er du sikker på at det er VB.NET du holder på med? VB-Script er ikke VB.NET.
Sist endret av m0b; 29. januar 2008 kl. 00:21.
Trådstarter
7 0
er helt sikker på at det er vb.net,
har programmert i 6 måneder nå.

er nokk den i System.Windows.Form greia ja.

Du kan se litt av koden her hvis det hjelper.

Public Sub Telenor_Sms()
WB.Navigate("http://www.telenor.no/privat/logginn/")
Wait()
WB.Document.All("j_username").SetAttribute("value", Number)
WB.Document.All("j_password").SetAttribute("value", Password)
WB.Document.All("submit").InvokeMember("click") ' <- er denne jeg sliter med
End Sub

Har foresten endret Webbrowser1 til WB, siden det er enklere å skrive det da.
Trigonoceps occipita
vidarlo's Avatar
Donor
Huhm, dropp å scripte webbrowseren, og ta i bruk eit bibliotek for å skrive requests direkte. Det er stortsett langt enklare når det gjeld automatisert handsaming av forms. Noko av det kraftigaste på området er vel python sin mechanize-modul, men sidan du skriv i vb reknar eg med det er uaktuelt. Så då står du tilbake med .net sine modular for www-requests, og dei er ut frå det eg kan sjå ikkje så heilt på trynet dei heller.

Edit: såg litt på noko C# eg fann, der det blir brukt nettopp posts. Det er 6-7 linjer for å kjøre en request, og det er rimelig enkelt å ta i bruk. Om du tar ein kik på http://msdn2.microsoft.com/en-us/lib...ebrequest.aspx finn du mykje dokumentasjon på den.
Sist endret av vidarlo; 29. januar 2008 kl. 08:33.
Trådstarter
7 0
ok. men er det ingen enkelt måte å gjøre det på i System.Windows.Form.Webbrowser?

Foresten så litt på den linken du ga meg vidarlo.
men skjønte ikke så mye av det. men skjønte litt.

Men kan du lage en eksempel kode som submiter den knappen jeg vil?
aller helst i vb.net. men skjønner litt C# også.

<div class="action button">
<input type="submit" class="l" value="Logg inn" />
</div>

Hadde skjønt mye mer da.

Og foresten. vet du ossen jeg ungår at webbrowseren loader bilder?
siden da hadde sider lastet mye fortere

Takk for at du/dere tar dere tid til å hjelpe meg.
hvem kødd er det som slettet min post her!?!?!
m0b
m0b's Avatar
DonorAdministrator
Jeg. Det er åpenbart at du ikke har skjønt hva det er snakk om, og det er lite vits i at trådstarter skal bli mer på villspor enn han allerede er.
Trigonoceps occipita
vidarlo's Avatar
Donor
Det eg foreslår er at du skipper HTML-biten, og ikkje bryr deg om den. Det nettlesaren gjer med ei form, er at den sender ein såkalla postrequest. Du kan omgå HTML, og sende postrequesten direkte ved hjelp av t.d HttpWebRequest, eller liknande system. Då sender du typisk brukarnavn og passord som variablar med samme navn som dei har i formen, til det som er spesifisert som action i formen, og får returnert HTML som om du hadde logga inn på vanleg vis.

Dersom du skal automatisere web-requests er dette i lengda mykje enklare enn å automatisere ein browsercontroll etter mi meining. Eg skriv diverre ingen .net-språk, så eg trur ikkje eg skal begi meg ut på å gi deg eksempel på det, men m0b kan heilt sikkert gi eit eksempel på det, og det kan vere verdt å ta ein kik på t.d denne kildekoden. Der ser du det i bruk, relativt langt oppe i koden. Det er skreve i C#. Eg har ikkje skreve det eksempelet der, så eg kan ikkje gå god for at det er perfekt koding, men det ser fint ut for meg.

Elles så hadde jo msdn eit par eksempel, og om du søkjer etter httpwebrequest visual basic .net så finn du sikkert ein god del referansekode o.l. via google.
Trådstarter
7 0
Takk for all hjelp
Fikk det til nå^^
etter en del søking på msdn og google. og alle linkene jeg har fått her.

Hvis noen lurer. så funker den koden her for meg

Public Sub Telenor_Sms()
WB.Navigate("https://telenormobil.no/minesider/login.do")
Wait()
WB.Document.All("j_username").SetAttribute("value", Nummer)
WB.Document.All("j_password").SetAttribute("value", Passord)
Dim form As HtmlElement = Me.WB.Document.Forms(1)
form.InvokeMember("submit")
End Sub
▼ ... noen uker senere ... ▼
For å svare på spørsmålet om å fjerne bilder på nettsiden så er det ganske enkelt, men hvis du vil surfe med bilder mens programmet går så må du da bruke en annen webbrowser enn IE.
Bare edit registry CurrentUser -> Software\Microsoft\Internet Explorer\Main\ -> "Display Inline Images") og sett til "yes" eller "no". Har selv ordnet slik at programmet mitt lagrer hva den stod originalt, og så setter det til det når programmet avsluttes eller krasjer.

Veldig enkelt, og loader sider utrolig mye sjappere selvsagt
Takk for hjelpen moocat.

Men ossen kan man velge hva som skal skje når programmet kræsjer?
eller mener du at det kræsjer i en Try så det kommer i Catch?
Ja, du bør utføre tester på variabler og klasser før du gjør noe som helst med de så du vet at de ikke krasjer. Sjekk om et objekt er null før du prøver å gjøre noe som helst med det. Som du nevner her, kan try, catch og finally benyttes i denne sammenhengen. Et problem med akkurat den framgangsmåten er at du skaper mye mer overhead.

Men, test ting før du gjør noe med de. Ting kan og vil gå galt, derfor må det sjekkes så unngår du at du krasjer applikasjonet.