Mit VB Internetseite öffnen und Button klicken

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Zero_90.

    Mit VB Internetseite öffnen und Button klicken

    Hallo liebe Freunde,

    ich bin noch relativ neu in diesem Bereich aber da mich VB sehr interessiert und ich auch im Beruf die Möglichkeit bekomme mit VB gewisse Tools zu erstellen, möchte ich natürlich immer besser werden.
    Nun stehe ich vor einem Problem, das selbst mein schlaues Buch nicht lösen kann.

    Aufgabe:

    1. Intranetseite aufrufen
    2. Einen Button klicken
    3. Das ganze soll alle 60 Minuten wiederholt werden.

    Die meisten werden wsl jetzt in Gelächter ausbrechen, ich schaffe es aber nicht.

    Mit dem Befehl Webbrowser1.Navigate (" URL") bekomme ich beim Testen einen Scriptfehler, außerdem habe ich keine Ahnung, wie ich im Webbrowser über VB einen Button klicken soll. Die Seite muss in der URL über einen Button refresht werden.
    Mit dem Normalen Webbrowser1.refresh ist das leider nicht möglich.

    Bitte Helft mir :)
    Grüße der blutige Anfänger
    Public Class Form1
    Dim hvar1 As Boolean
    Dim zaehler1 As Integer

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    End

    End Sub

    Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    MsgBox(" ")

    End Sub

    Private Sub ProgressBar1_Click(sender As System.Object, e As System.EventArgs) Handles ProgressBar1.Click



    End Sub

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    hvar1 = True
    ProgressBar1.Maximum = 1000

    If zaehler1 >= "0" Then
    zaehler1 = zaehler1
    Else : zaehler1 = "0"
    End If

    Label1.Text = ("Es wurde bereits")
    Label2.Text = zaehler1
    Label3.Text = ("mal refresht")
    Label4.Text = ("xyz")

    WebBrowser1.Navigate("https://www.muc.xyz.com")



    End Sub

    Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    Timer1.Start()



    End Sub

    Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    Dim hvar1 As Boolean
    ProgressBar1.Value += 1
    If ProgressBar1.Value = 1000 Then
    Timer1.Stop()
    hvar1 = True
    zaehler1 += 1
    Label2.Text = zaehler1
    ProgressBar1.Value = 0
    WebBrowser1.Refresh()
    Timer1.Start()

    End If

    End Sub

    Private Sub PictureBox1_Click(sender As System.Object, e As System.EventArgs) Handles PictureBox1.Click

    End Sub

    Private Sub Button4_Click(sender As System.Object, e As System.EventArgs) Handles Button4.Click
    Timer1.Stop()
    End Sub

    Private Sub Button5_Click(sender As System.Object, e As System.EventArgs) Handles Button5.Click
    Timer1.Stop()
    ProgressBar1.Value = 0
    hvar1 = True

    End Sub

    Private Sub WebBrowser1_DocumentCompleted(sender As System.Object, e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted

    End Sub
    End Class


    Mir fehlt einfach der Ansatz, wo ich dann auf der Intranetseite den Button klicken soll.
    Nach der Zeit vom Timer1 (welche jetzt noch keine 60 min sind) soll der button auf der hp geklickt werden.
    Ich hab schon gesucht aber da finde ich immer nur Sachen zu irgendwelchen Bots...keine Ahnung was damit genau gemeint ist.

    Danke für die schnelle Antwort.
    bevor sich das jemand anschaut, solltest du den Code in einen Spoiler (siehe Editor-Optionen) und die passenden Code-Tags (ebenfalls Editor-Optionen) packen, damit man sich besser damit zurecht findet.

    ######
    EDIT: ich hab mich da mal durchgewühlt..

    Im Grunde musst du im Webbrowser die entsprechende URL aufrufen (hast du)

    Nun musst du folgendes Wissen: Wie ist eine Website aufgebaut?
    Dir steht auf dieser Seite das HTML zur Verfügung. Wenn du nun schaust, hast du diverse Selektoren wie z.B. Tags, Klassen, IDs usw. Du musst nun, ähnlich wie hier mit Hilfe des Selektors zum Button (den du dir selbst raussuchen musst), das entsprechende Element suchen und das jeweilige Event invoken.


    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:

    VB.NET-Quellcode

    1. Dim CheckButton, yahooId As HtmlElement
    2. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) _ Handles WebBrowser1.DocumentCompleted
    3. yahooId = WebBrowser1.Document.GetElementById("yahooid")
    4. CheckButton = WebBrowser1.Document.GetElementById("yidHelperBtn")
    5. yahooId.InnerText = "testID" 'Replace testID by the ID you want
    6. Timer1.Start() 'Starts the timer: within 1000 ms (1 s). It will execute the Timer1_Tick sub.
    7. End Sub
    8. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    9. CheckButton.Focus() 'Give the check button the focus
    10. SendKeys.Send("{ENTER}") 'Causes the validation of the check button
    11. Timer1.Stop() 'Stops the timer
    12. End Sub


    Ok, ich verstehe das so halbwegs, HTML ist so ne Sache ^^
    Ich hab jedoch den Button im Quelltext der Seite gefunden und werde mich mal durchkämpfen.

    HTML-Quellcode

    1. <div class="gallery-actions-left"><a href="#"><button class="btn btn-primary flat-button" id="gallery-vote" enabled="">Refresh</button>


    So viel hab ich bis jetzt herausgefunden.

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

    Achja noch kurz zur Struktur:

    Ein Tag ist sehr allgemein, da ja jedes Element von diesem Typ mit dem gleichen Tag beginnt. Wenn du dir also die Elemente über den Tag host (button), bekommst du ein Array aller Buttons auf der Seite.

    Wenn du über eine Klasse gehst, wird es schon genauer, jedoch können aus deinem Beispiel x-mal buttons mit der Klasse "btn" oder "btn-primary" oder "flat-button" existieren, also unter umständen kommt auch hier ein Array.

    -> Problem: du weißt ja nicht, welches Element im Array jetzt dein gesuchter Button ist.

    Sprich das wohl sicherste wäre eine (eindeutige) ID. Was du ja im Bsp. auch vorliegen hast.
    Sofern die Website-Entwickler keinen Schlunz gebaut haben und IDs doppelt vergeben haben, kannst du über die ID den Button direkt ansprechen und invoken. :)


    LG, Acr0most
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup:
    Sehr schön, du hast uns Code von Stackoverflow hier rein kopiert.

    Ich will ja kein Spielverderber sein, aber dass der Button den du klicken willst ​gallery-vote heißt und du uns nicht die URL mitteilst, bringt bei mir die Alarmglocken zum schrillen. Das sieht mir ein wenig nach Manipulation eines Votings aus.

    Belehre mich gern eines Besseren.
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.
    Es handelt sich um eine interne Seite. Um votes zu manipulieren gibt es wohl effektivere und effizientere Wege.
    Ich bin her gekommen, weil ich Rat suche. Die URL wird nicht nützen, da diese von meinem Arbeitgeber ist und sie sowieso nicht darauf zugreifen können.
    Trotzdem berechtigte Vermutung.
    Nochmal, es handelt sich nicht um eine Manipulation!
    Ich verstehe nicht viel von HTML und CSS und habe keine Ahnung wie/wo ich ansetzen soll.