Webbrowser auswahl in dropdownmenue mit Button senden

  • VB.NET

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von brennbolle.

    Webbrowser auswahl in dropdownmenue mit Button senden

    Hallo zusammen :)

    Kurz vorweg, Ich habe vor kurzem angefangen, mich ein wenig mit der erstellung eines webbrowsers zu beschäftigen. (ANFÄNGER)
    Ich habe mir einen browser mit einigen buttons an der seite gemacht, um damit direktzugriff buttons für ein Browsergame zu erstellen, um Lästiges hin und her oder mehrfach klicken mit einem Tastendruck zu erledigen. Bis jetzt hab ich alles so hinbekommen wie ich es mir vorgestellt habe. SInd eigentlich alles buttons wo ich mit:

    WebBrowser1.Navigate("http://toll.meinspiel.de/drf/")
    +
    WebBrowser1.Document.GetElementById("menge_Dies").InnerText = Me.TextBox2.Text
    WebBrowser1.Document.GetElementById("drink_ier").InvokeMember("click")
    +
    WebBrowser1.Document.Forms(0).InvokeMember("submit")

    usw ausgekommen bin.

    nun möchte ich einen button erstellen, der 3 mal eine Dropdownbox Auswahl macht und dann sendet. und da is auch schon schluss mit meinem ANfängerglück, ich weiss nicht wie ich die auswahl mache, unten sind beispiele aus dem Quellcode :

    1 Dropdownmenü


    <form id="start_form" method="POST" action="/magic/magic_action/" style="display:inline;">

    <div id="worldmenu">

    <div class="actionshell" id="start_1">
    <span style="color:#EEE;font-weight:bold; font-size:14px;">Gebiet:</span> <select name="area_id" onchange="change_map(this.value)" style="font-weight:bold; background-color: #222; border: 1px solid #191919; color:#AAA; margin:3px; padding:1px;" id="area_id">
    <option value="None" selected="selected" disabled="">Auswählen...</option>

    <option value="1,stark,1">oben</option>

    <option value="2,stark,3">unten</option>

    <option value="3,stark,3">links</option>

    <option value="4,stark,3">rechts</option>

    </select>

    ......
    ................
    ..................

    2 Dropdownmenu

    HTML-Quellcode

    1. <div class="actionshell " id="start_2" style="display: block;">
    2. <span style="color:#EEE;font-weight:bold; font-size:14px;">Route:</span> <select name="route_length" onchange="change_path(this.value)" style="font-weight:bold; background-color: #222; border: 1px solid #191919; color:#AAA; margin:3px; padding:1px;">
    3. <option value="0" selected="selected" disabled="">Auswählen...</option>
    4. <option value="10">Route A (10 drf)</option>
    5. <option value="30">Route B (30 drf)</option>
    6. <option value="90">Route C (90 drf)</option>

    ......................
    ..........................

    nun meine Frage wie füge ich das in meine Buttons ein?ich muss dazu sagen, beim ersten dropdownmenu kann immer das gleiche gewählt werden, egal ob 1,2,3,4 also ein fester wert.

    Bei der 2ten Auswahl, müsste ich immer 10 (A) als auswahl haben.

    Ich hoffe ich konnte halbwegs rüberbringen was ich möchte ?( ?( ?( :thumbsup:

    Vielen DANK im vorraus.....

    LG :D
    So wenn ich jetzt den quelltext als beispiel nehme:

    HTML-Quellcode

    1. <form id="start_form" method="POST" action="/magic/magic_action/" style="display:inline;">
    2. <div id="worldmenu">
    3. <div class="actionshell" id="start_1">
    4. <span style="color:#EEE;font-weight:bold;
    5. font-size:14px;">Gebiet:</span> <select name="area_id"
    6. onchange="change_map(this.value)" style="font-weight:bold;
    7. background-color: #222; border: 1px solid #191919; color:#AAA;
    8. margin:3px; padding:1px;" id="area_id">
    9. <option value="None" selected="selected" disabled="">Auswählen...</option>
    10. <option value="1,stark,1">oben</option>
    11. <option value="2,stark,3">unten</option>
    12. <option value="3,stark,3">links</option>
    13. <option value="4,stark,3">rechts</option>
    14. </select>



    Mein Button dazu:

    VB.NET-Quellcode

    1. Me.Text = "Working...."
    2. Button1.Enabled = False
    3. Me.Cursor = Cursors.WaitCursor
    4. WebBrowser1.Navigate("http://toll.meinspiel.de/drf/")
    5. Application.DoEvents()
    6. Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    7. Application.DoEvents()
    8. Loop
    9. Me.Text = "Seite wurde geladen"
    10. Button1.Enabled = True
    11. Me.Cursor = Cursors.Arrow
    12. WebBrowser1.Document.GetElementById("start_1").GetElementsByTagName("value = 1, selected= selected")
    13. End Sub


    Sollte doch beim klick auf den Button die seite geladen werden,u nd die die erste dropdown box sollte ausgewählt sein oder?

    "oder was hab ich da jetzt falsch verstanden" ??

    Danke für die Hilfe !!!!


    "Danke für die schnelle Antwort, werd mal schauen ob ich damit irgendwie weiterkomme ;)

    LG"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „brennbolle“ ()

    brennbolle schrieb:

    oder was hab ich da jetzt falsch verstanden"
    Ja, hast Du.

    Versuchen wirs mal ungetestet, d.h. Code kann Fehler enthalten

    VB.NET-Quellcode

    1. wb.Navigate("http://irgendwohin.de")
    2. While (wb.ReadyState <> WebBrowserReadyState.Complete OrElse wb.Document = Nothing) : Application.DoEvents() : End While
    3. ' nur zur kürzeren Schreibweise und Klarstellung dass es ein HTMLDocument ist
    4. Dim doc As HtmlDocument = wb.Document
    5. ' das Element mit der ID 'start_1' ermitteln: dieses ist ein Containerelement und kann andere enthalten
    6. Dim divElement As HtmlElement = doc.GetElementById("start_1")
    7. ' alle HtmlElemente mit dem Tagname "Option" holen
    8. Dim optionElements As HtmlElementCollection = divElement.GetElementsByTagName("option")
    9. ' alle durchlaufen
    10. For Each optionElement As HtmlElement In optionElements
    11. ' zur Überprüfung im Direktfenster anzeigen
    12. Debug.Print("Option: {0}", optionElement.OuterHtml)
    13. ' nach option text prüfen
    14. If optionElement.InnerText.ToUpper.Contains("UNTEN") Then
    15. ' selektieren
    16. optionElement.SetAttribute("Selected", "selected")
    17. End If
    18. Next
    Also deine Auflistung ist gut gemacht, sehr verständlich.

    Nur weiss ich jetzt nicht genau wie ich zb:

    Dim doc As HtmlDocument = wb.Document in visual Basic 2010 schreiben muss.

    bzw. was du mit dem leerzeichen meinst? ??

    ;) thx
    das hatte ich schon gemrkt, aber das meinte ich eigentlich nicht, meinte ob du mir anhand deiner auflistung zu einem Punkt mal einen Beispielcode schreiben kannst. Zb:

    Dim doc As HtmlDocument = wb.Document = (Schreibweise)

    oder

    Dim optionElements As HtmlElementCollection = divElement.GetElementsByTagName("option") = (Schreibweise)

    Nur als beispielcode. denn "HtmlDocument = WebBrowser1.Document" nimmt vb ja auch garnicht.

    Sorry aber wenn man grad damit anfängt, kommen solche sachen denke ich häufiger vor was??

    !!!DANKE!!
    hmm, ich verstehe Deine Frage wohl nicht ganz.

    Wenn Dir Visual Studio diesen Beispielcode nicht annimt, so schreibe mal ganz oben als allererstes Statement in Deiner Form: Imports System.Windows.Forms.

    Normalerweise sollte dieser Namespace aber schon automatisch enthalten sein.
    Dim doc As HtmlDocument = webbrowser1.Document

    Man gibt normalerweise bei der Deklaration einer Variablen den Typ an, wie z.B. auch dim i as Integer=25

    In VB.NET gehts leider auch ohne explizite Typangabe, aber das ist (für mich) schlechter Stil.

    Nachtrag: du wolltest einen vollständigen lauffähigen Code, hier ist er:
    "Beispielcode"

    VB.NET-Quellcode

    1. Imports System.Windows.Forms
    2. Public Class Form1
    3. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    4. ' navigate
    5. WebBrowser1.Navigate("http://irgendwohin.de")
    6. While (WebBrowser1.ReadyState <> WebBrowserReadyState.Complete OrElse WebBrowser1.Document = Nothing) : Application.DoEvents() : End While
    7. ' nur zur kürzeren Schreibweise und Klarstellung dass es ein HTMLDocument ist
    8. Dim doc As HtmlDocument = WebBrowser1.Document
    9. ' das Element mit der ID 'start_1' ermitteln: dieses ist ein Containerelement und kann andere enthalten
    10. Dim divElement As HtmlElement = doc.GetElementById("start_1")
    11. ' alle HtmlElemente mit dem Tagname "Option" holen
    12. Dim optionElements As HtmlElementCollection = divElement.GetElementsByTagName("option")
    13. ' alle durchlaufen
    14. For Each optionElement As HtmlElement In optionElements
    15. ' zur Überprüfung im Direktfenster anzeigen
    16. Debug.Print("Option: {0}", optionElement.OuterHtml)
    17. ' nach option text prüfen
    18. If optionElement.InnerText.ToUpper.Contains("UNTEN") Then
    19. ' selektieren
    20. optionElement.SetAttribute("Selected", "selected")
    21. End If
    22. Next
    23. End Sub
    24. End Class

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Kangaroo“ ()

    So Eingabe hat geklappt, ohne fehlermeldungen, so wie der code jetzt da steht, hab ich ihn auchb bei mir, nur das Link zum Spiel selbst (http://) bei mir der richtige ist, wenn ich jetzt auf den button klicke, geht er zur gewünschten seite, und es müsste doch jetzt der erste markiert sein oder? ich hab gerade noch mal in den queltext der seite geschaut, da stand direkt über der zeile mit start_form = <div id="tabcontainer">


    <div id="tabcontainer">


    <form id="start_form" method="POST" action="/pet/pet_action/" style="display:inline;">

    <div id="petactionmenu">

    <div class="actionshell" id="start_1">


    Kann das was damit zu tun haben?


    LG

    edit: VIELEN DANK FÜR DEN CODE !!!!! :thumbsup: :thumbsup:
    bis jetzt leider erfolglos :( das muss doch irgendwie zu machen sein ?
    Es müssen 3 werte angegeben werden, und abgesendet werden über meinen Button.
    start_1 + start_2 + start_3 dann abschicken. Soviel verstehe ich auch, aber wie stell ich das an???


    ich häng nochmal den ORIG. Quelltext auszug ran, vlt, könnt ihr mal drüberschauen.


    THX Gruß :(

    HTML-Quellcode

    1. <div id="tabcontainer">
    2. <form id="start_form" method="POST" action="/pet/pet_action/" style="display:inline;">
    3. <div id="petactionmenu">
    4. <div class="actionshell" id="start_1">
    5. <span style="color:#EEE;font-weight:bold; font-size:14px;">Gebiet:</span> <select name="area_id" onchange="change_map(this.value)" style="font-weight:bold; background-color: #222; border: 1px solid #191919; color:#AAA; margin:3px; padding:1px;" id="area_id">
    6. <option value="None" selected="selected" disabled="">Auswählen...</option>
    7. <option value="1,Robust,1">Nord</option>
    8. <option value="2,Wild,3">West</option>
    9. <option value="3,Wild,3">Ost</option>
    10. <option value="4,Wild,3">Süd</option>
    11. </select>
    12. <div id="map" class="map_1">
    13. <div class="hitbox" style="top:25px;left:100px;" onclick="selectMap(1)"></div>
    14. <div class="hitbox" style="top:65px;left:140px;" onclick="selectMap(3)"></div>
    15. <div class="hitbox" style="top:105px;left:100px;" onclick="selectMap(4)"></div>
    16. <div class="hitbox" style="top:65px;left:60px;" onclick="selectMap(2)"></div>
    17. </div>
    18. <div style="display: block;" id="often_used_container"><span style="color:#AAA">Zur Zeit häufig hier:</span>
    19. <div class="often_used_1" id="often_used">Robuste Tiere</div>
    20. </div>
    21. <!--<div class="weather_condition weather_condition_2" style="margin-right: 5px;">Gewitter</div>
    22. <div class="weather_condition weather_condition_4">Sonnig</div>-->
    23. </div>
    24. <div class="actionshell " id="start_2" style="display: block;">
    25. <span style="color:#EEE;font-weight:bold; font-size:14px;">Route:</span> <select name="route_length" onchange="change_path(this.value)" style="font-weight:bold; background-color: #222; border: 1px solid #191919; color:#AAA; margin:3px; padding:1px;">
    26. <option value="0" selected="selected" disabled="">Auswählen...</option>
    27. <option value="10">Route A (10 min)</option>
    28. <option value="30">Route B (30 min)</option>
    29. <option value="90">Route C (90 min)</option>
    30. </select>
    31. <div id="path" class="path_10">
    32. </div>
    33. <div id="pathcost" class="path_info">Diese Route kostet dein Tier <span class="pathcost_value">10</span> Ausdauer beim Start</div>
    34. </div>
    35. <div class="actionshell " id="start_3" style="display: block;">
    36. <span style="color:#EEE;font-weight:bold; font-size:14px;">Haustier auswählen:</span>
    37. <ul id="pet_choice">
    38. <li>
    39. <div id="s_pet49606" class="petshell_mini pet_activated" onclick="choose_pet(49606, 30)">
    40. <div class="petname">Larup <span class="pet_original">(Drache)</span></div>
    41. <div class="daytime_advantage"><img src="http://static.pennergame.de/img/pv4/pet/daytimes/NIGHT_True.png"></div>
    42. <div class="petspec">
    43. <img src="http://static.pennergame.de/img/pv4/pet/cat/3.png">
    44. <div class="specinfo" style="margin-left:30px;">
    45. <div class="goodorbad" style="color:#0F0;"><img src="http://static.pennergame.de/img/pv4/pet/cat/2.png" style="vertical-align:middle;margin-right:3px;">Gut gegen "Flink"</div>
    46. <div class="goodorbad" style="color:#F00"><img src="http://static.pennergame.de/img/pv4/pet/cat/1.png" style="vertical-align:middle;margin-right:3px;">Schlecht gegen "Robust"</div>
    47. </div>
    48. </div>
    49. <div style="opacity: 0;" class="petimg pet_hp_mini">
    50. <div class="pet_hp_mini_data" style="display:none;">30</div>
    51. Zuwenig Ausdauer!
    52. </div>
    53. </div>
    54. </li>
    55. <li>
    56. <div id="s_pet51152" class="petshell_mini" onclick="choose_pet(51152, 310)">
    57. <div class="petname">luzit <span class="pet_original">(Drache)</span></div>
    58. <div class="daytime_advantage"><img src="http://static.pennergame.de/img/pv4/pet/daytimes/NIGHT_True.png"></div>
    59. <div class="petspec">
    60. <img src="http://static.pennergame.de/img/pv4/pet/cat/3.png">
    61. <div class="specinfo" style="margin-left:30px;">
    62. <div class="goodorbad" style="color:#0F0;"><img src="http://static.pennergame.de/img/pv4/pet/cat/2.png" style="vertical-align:middle;margin-right:3px;">Gut gegen "Flink"</div>
    63. <div class="goodorbad" style="color:#F00"><img src="http://static.pennergame.de/img/pv4/pet/cat/1.png" style="vertical-align:middle;margin-right:3px;">Schlecht gegen "Robust"</div>
    64. </div>
    65. </div>
    66. <div style="opacity: 0;" class="petimg pet_hp_mini">
    67. <div class="pet_hp_mini_data" style="display:none;">310</div>
    68. Zuwenig Ausdauer!
    69. </div>
    70. </div>
    71. </li>
    72. <li>
    73. <div id="s_pet55130" class="petshell_mini" onclick="choose_pet(55130, 120)">
    74. <div class="petname">theo <span class="pet_original">(Drache)</span></div>
    75. <div class="daytime_advantage"><img src="http://static.pennergame.de/img/pv4/pet/daytimes/NIGHT_True.png"></div>
    76. <div class="petspec">
    77. <img src="http://static.pennergame.de/img/pv4/pet/cat/3.png">
    78. <div class="specinfo" style="margin-left:30px;">
    79. <div class="goodorbad" style="color:#0F0;"><img src="http://static.pennergame.de/img/pv4/pet/cat/2.png" style="vertical-align:middle;margin-right:3px;">Gut gegen "Flink"</div>
    80. <div class="goodorbad" style="color:#F00"><img src="http://static.pennergame.de/img/pv4/pet/cat/1.png" style="vertical-align:middle;margin-right:3px;">Schlecht gegen "Robust"</div>
    81. </div>
    82. </div>
    83. <div style="opacity: 0;" class="petimg pet_hp_mini">
    84. <div class="pet_hp_mini_data" style="display:none;">120</div>
    85. Zuwenig Ausdauer!
    86. </div>
    87. </div>
    88. </li>
    89. </ul>
    90. <input id="pet_id" name="pet_id" value="49606" type="hidden">
    91. <center>
    92. <input id="action_start_button" value="Start" style="border: 0px none; margin: 0px; display: inline;" class="startbutton" onclick="start_petaction()" type="button">
    93. </center>
    94. </div>

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „brennbolle“ ()

    Noch eine frage: kann soweit alle buttons ansteuern, die ich möchte, nur mit dem Logout button klappt es irgendwie nicht. Quellcode unten:

    Html:

    HTML-Quellcode

    1. </div>
    2. <form method="get" action="/logout/">
    3. <div><input class="formbutton zabsolute" value="Logout" type="submit"></div>
    4. </form>
    5. </div>


    Diesen Logout Button möchte ich aus meinem Vb webbrowser ansteuern. Vielen Dank im vorraus

    Habe es jetzt so versucht:

    VB.NET-Quellcode

    1. Private Sub Button22_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button22.Click
    2. WebBrowser1.Navigate("http://mein.game.de")
    3. Dim allelements As HtmlElementCollection = WebBrowser1.Document.All
    4. For Each webpageelement As HtmlElement In allelements
    5. If webpageelement.GetAttribute("value") = "Logout" Then
    6. webpageelement.InvokeMember("click")
    7. End If
    8. Next
    9. End Sub

    leider ohne erfolg, ?????

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „brennbolle“ ()