über webbrowser auf html elemente zugreifen, aber wie

a-f-r-a

Grünschnabel
huhu

ich habe ein total nerviges problem! und zwar möchte ich ein programm schreiben, das meinen router auf knopfdruck resettet...
das mit dem seite aufrufen, und dem einloggen ist kein problem, nur:

aufgrund einer total seltsamen realisierung der routerseitigen konfigurationswebseite weis ich jetzt nicht mehr, wie ich die buttons zum verbinden bzw. trennen ansprechen soll...

sie haben kein name / id element... außerdem sind wesentlich mehr buttons im quelltext zu sehen, als tatsächlich sichtbar sind... ich poste einfach mal den html-schnipsel:

Code:
<input disabled="disabled" _displayed="info.wan_mode==1" _disabled="getStatusCode() != 0" onclick="actionButton(2,'dhcp.cgi');" class="button_submit" value="DHCP-Erneuerung" style="display: none;" type="button">
<input _displayed="info.wan_mode==1" _disabled="getStatusCode() != 2" onclick="actionButton(1,'dhcp.cgi');" class="button_submit" value="DHCP-Freigabe" style="display: none;" type="button">
<input disabled="disabled" _displayed="info.wan_mode==2" _disabled="getStatusCode() != 0" onclick="actionButton(1,'pppoe.cgi');" class="button_submit" value="Verbinden" style="" type="button">
<input _displayed="info.wan_mode==2" _disabled="getStatusCode() != 2" onclick="actionButton(2,'pppoe.cgi');" class="button_submit" value="Trennen" style="" type="button">
<input disabled="disabled" _displayed="info.wan_mode==3" _disabled="getStatusCode() != 0" onclick="actionButton(1,'pptp.cgi');" class="button_submit" value="Verbinden" style="display: none;" type="button">
<input _displayed="info.wan_mode==3" _disabled="getStatusCode() != 2" onclick="actionButton(2,'pptp.cgi');" class="button_submit" value="Trennen" style="display: none;" type="button">
<input disabled="disabled" _displayed="info.wan_mode==4" _disabled="getStatusCode() != 0" onclick="actionButton(1,'l2tp.cgi');" class="button_submit" value="Verbinden" style="display: none;" type="button">
<input _displayed="info.wan_mode==4" _disabled="getStatusCode() != 2" onclick="actionButton(2,'l2tp.cgi');" class="button_submit" value="Trennen" style="display: none;" type="button">
<input disabled="disabled" _displayed="info.wan_mode==5" _disabled="getStatusCode() != 0" onclick="actionButton(1,'bigpond.cgi');" class="button_submit" value="Bigpond Login" style="display: none;" type="button">
<input _displayed="info.wan_mode==5" _disabled="getStatusCode() != 2" onclick="actionButton(2,'bigpond.cgi');" class="button_submit" value="Bigpond Logout" style="display: none;" type="button">

die übergeordnete form hat den namen "mainform"
und der 3. und 4. button (von oben) sind die beiden, um die es mir geht...

ich finde einfach keine funktionierende variante, diese buttons automatisch anzuklicken... und die documentation dafür bei microsoft finde ich auch extrem unübersichtlich...

ich habe mir dann gedacht, das es ja evtl. viel schlauer und einfacher wäre auf den umweg über die buttons zu verzichten und einfach DIREKT die scripte auszuführen... hat (bisher) natürlich nicht geklappt... ich hab da auch ein paar sachen gefunden, von denen ich dachte das sie funkltionieren müssten, aber unlogischerweise taten sie das nicht... ätzend...

es wäre wirklich sehr nett, wenn mir jemand helfen könnte... ich kenne mich mit vb noch nicht besonders gut aus und habe jetzt schon gefrusteterweise fast 3 stunden das inet umgekrempelt und sogar auf chinesischen seiten versucht mit den codeschnipseln in lateinischer schrift etwas anzufangen :-(

ach, ich geh jetzt einfach schlafen...
 
Im Prinzip funktioniert das Ausfüllen/Senden von Webformularen so wie hier beschrieben, wenn du ein WebBrowser-Steuerelement auf deiner Form hast.

Wenn die Felder/Buttons keinen Namen haben, kann man sie sicher auch per Index ansprechen (wie die Forms im oa Beispiel), schau dir dazu mal die JavaScript-Referenz auf SelfHTML an. Du musst dann halt nur noch die Indizes der Buttons herausfinden (Probieren bzw. Zählen) die du aktivieren möchtest.


Der Doc!
 
jo, exakt mit diesem beispiel hab ich angefangen :)

Code:
wbrWebBrowser.Document.Forms(0).submit.Click

aber da heisst der button ja "submit" die idee mit den indizes hatte ich auch schon, ich weis aber nicht genau wie ich das verwenden soll... ich hab schon superlange danach gesucht, aber nichts gefunden, was bei mir bisher funktionierte...

Code:
wbrWebBrowser.Document.Forms(0).all(34).Click

sollte das nicht so funktionieren? und wenn ja, wovon gehe ich dann aus, was element 0 ist? wo fange ich an zu zählen? gibt es dafür irgendwelche hilfsmittel?
 
Bei den Forms sollte das ja kein Problem sein, jedes Formula wird ja im Code durch <Form> deklariert. Bei den Buttons musst du schauen, ob es hier bei jedem Form neu indiziert oder ob er hier durchlaufend von Beginn weg nur einen Index hochzählt.

Ich hab hier leider keinen WebBrowser zum probieren, ich werd mal sehen ob ich das am Wochenende (hab jetzt bis Mittwoch jeden Tag 12 Stunden Dienst) am Abend mal prüfen kann. Versuch du es auch inzwischen, wenn ich was habe meld ich mich natürlich.


Der Doc!
 
ja, dankeschön :)

mir lässt sowas immer keine ruhe... aber es ist dann auch super frustrierend, wenn alles was ich im internet dazu finde dann nicht funktioniert... :-(

aber ich werde einfach mal ein paar testseiten kreieren und mal ein paar dinge ausprobieren. das problem ist nur, das ich bisher kaum mit vb in kontakt gekommen bin... aber für eine schnelle und einfach lösung des problems erscheint es mir zugänglicher als andere sprachen/umgebungen...

kannst du mir etwas vergleichbares wie selfhtml für vb empfehlen?

so, mein hund verspührt ein bedürfniss :) byebye
 
JUHU!

ich hab jetzt was gefunden was funktioniert! ist auch total easy..

ich machs einfach SO:
Code:
wbrWebBrowser.Document.getElementsByTagName("input")(3).Click

(ich muss den 4. button drücken)

hat da irgendwer bedenken, oder gibt es einen guten grund das so nicht zu machen?
 
Wenns funktioniert kannst du es natürlich bedenkenlos verwenden. Bedenke aber, dass ein eventuelles Firmware-Update das Layout der Seite verschieben kann.

Betr deiner anderen Frage, einen guter VB-Kurs ist der von Rolf Hirte.


Der Doc!
 
Zurück