none
Button auf einer Website per VBS klicken? RRS feed

  • Frage

  • Hallo,

    vorweg, ich habe sehr begrenzte Kenntnisse in VB(S). Ich bin gerade dabei, ein Skript zu schreiben, welches eine Website öffnet und dort einen Button klicken soll. Das öffnen der URL ist kein Problem, jedoch bekomme ich es nicht hin, den Button per Code anzuklicken. Mir ist bewusst, das ich es "Quick & Dirty" mit "SendKeys" machen könnte, jedoch würde ich das gerne sauber gelöst haben.

    Mein aktueller Quellcode sieht so aus:

    Dim objExplorer_Left, objExplorer_Right, url, bjWshShell, Title_Right, Title_Left
    
    url_Left = "Hier steht meine URL für den linken Bildschirm"
    url_Right = "hier steht meine URL für den rechten Bildschirm"
    Set objExplorer_Left = CreateObject("InternetExplorer.Application")
    Set objExplorer_Right = CreateObject("InternetExplorer.Application")
    set Shell = WScript.CreateObject("WScript.Shell")
    
    'Linker Monitor
    
    objExplorer_Left.TheaterMode = False
    objExplorer_Left.AddressBar = True
    objExplorer_Left.MenuBar = False
    objExplorer_Left.Resizable = True
    
    ' Hier die Fenstergröße definieren
    objExplorer_Left.Height = 1080
    objExplorer_Left.Width = 1920
    objExplorer_Left.Left = 0
    objExplorer_Left.Top = 0
    objExplorer_Left.FullScreen = False
    objExplorer_Left.Silent = False
    objExplorer_Left.Visible = True
    Wscript.Sleep 1000
    objExplorer_Left.Navigate url_Left
    Do While (objExplorer_Left.Busy)
        Wscript.Sleep 250
    Loop
    
    Shell.AppActivate ("Am Panda-Konto anmelden - Internet Explorer")
    
    'hier tritt der Fehler auf
    objExplorerLeft.Document.getElementsByName("Anmelden").Item(0).Click 
    
    
    
    'Rechter Monitor
    Do While (objExplorer_Left.Busy)
        Wscript.Sleep 250
    Loop
    
    Set objExplorer_Left = nothing
    
    WScript.Sleep 8000
    
    objExplorer_Right.TheaterMode = False
    objExplorer_Right.AddressBar = True
    objExplorer_Right.MenuBar = False
    objExplorer_Right.Resizable = True
    ' Hier die Fenstergröße definieren
    objExplorer_Right.Height = 1080
    objExplorer_Right.Width = 1920
    objExplorer_Right.Left = 1920
    objExplorer_Right.Top = 0
    objExplorer_Right.FullScreen = False
    objExplorer_Right.Silent = False
    objExplorer_Right.Visible = True
    
    objExplorer_Right.Navigate url_Right
    
    'hier soll wieder ein Button geklickt werden
    Set objExplorer_Right = nothing

    Ich habe schon im Web recherchiert, aber nichts funktioniert so richtig, aufgrund meiner mangelnden Kenntnisse. Im Prinzip geht es um die Zeile: objExplorerLeft.Document.getElementsByName("Anmelden").Item(0).Click

    Hier tritt der Fehler auf. Ehrlich gesagt weiß ich nicht wirklich, wie ich meinen Code abändern könnte, damit der gewünschte Button geklickt wird.

    Der HTML-Code meines Buttons, welcher geklickt werden soll ist folgender:

    <input title="Anmelden" class="button" id="loginButton" value="Anmelden" type="submit">

    Ich würde mich sehr freuen, wenn mir da jemand eventuell weiter helfen könnte.

    Vielen Dank,

    Mit freundlichen Grüßen,

    Felix

    Donnerstag, 17. August 2017 09:10

Antworten

  • Danke erst mal für die Code-Beispiele,

    es ging mir in meinem Beispiel jedoch um ein VB Script, nicht um VB. Tut mir leid, wenn ich mich da eventuell nicht ganz klar ausgedrückt habe.

    Habe nach einigem probieren und recherchieren jetzt aber endlich eine funktionierende Lösung gefunden.

    Ich poste Sie mal noch hier für die Nachwelt herein, falls jemand das selbe Problem haben sollte:

    With CreateObject("InternetExplorer.Application")
    .TheaterMode = False
    .AddressBar = True
    .MenuBar = False
    .Resizable = True
    
    ' Hier die Fenstergröße definieren
    .Height = 1080
    .Width = 1920
    .Left = 0
    .Top = 0
    .FullScreen = False
    .Silent = False
    .Visible = True
    Wscript.Sleep 1000
    .Navigate url_Left
    Do While (.Busy Or .READYSTATE <> 4)
        Wscript.Sleep 250
    Loop
    Shell.AppActivate ("Am Panda-Konto anmelden - Internet Explorer")
    Set oInputs = .Document.getElementsByTagName("input")
    For Each elm In oInputs
    If elm.Value = "Anmelden" Then
    elm.Click
    Exit For
    End If
    Next

    Mit freundlichen Grüßen,

    Felix



    • Als Antwort markiert Felix24 Freitag, 18. August 2017 09:40
    • Bearbeitet Felix24 Freitag, 18. August 2017 09:45
    Freitag, 18. August 2017 09:40

Alle Antworten

  • Hallo Felix 

    Ich hoffe Code Beispiele Helfen weiter,.. oder 2 Links am Ende um deinen Fehler zu finden .

               

    beispiel mehrere button verweise
    ----
    Private Sub clearButton_Click() Handles clearButton.Click
        ' Clear the picture.
        PictureBox1.Image = Nothing
    End Sub

    Private Sub backgroundButton_Click() Handles backgroundButton.Click
        ' Show the color dialog box. If the user clicks OK, change the
        ' PictureBox control's background to the color the user chose.
        If ColorDialog1.ShowDialog() = DialogResult.OK Then
            PictureBox1.BackColor = ColorDialog1.Color
        End If
    End Sub

    Private Sub closeButton_Click() Handles closeButton.Click
        ' Close the form.
        Close()
    End Sub

    Private Sub CheckBox1_CheckedChanged() Handles CheckBox1.CheckedChanged
        ' If the user selects the Stretch check box, change 
        ' the PictureBox's SizeMode property to "Stretch". If the user 
        ' clears the check box, change it to "Normal".
        If CheckBox1.Checked Then
            PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
        Else
            PictureBox1.SizeMode = PictureBoxSizeMode.Normal
        End If
    End Sub


    --beispiel button 1--

    Private Sub showButton_Click() Handles showButton.Click

    End Sub
    -------------Beispiel Log in Button----

     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If TextBox1.Text <> "" And TextBox2.Text <> "" Then
            MsgBox("Invalid username and password, Please try again!", +vbExclamation, +vbOK)


        ElseIf TextBox1.Text = My.Settings.Username And
        TextBox2.Text = My.Settings.Password Then
            MsgBox("Login Successfuly! Good day.", +vbInformation, +vbOK)
            Form3.Show()
            Me.Hide()

        Else
            MessageBox.Show("Please complete the required fields.", "Authentication Error" + TextBox1.Text + TextBox2.Text, MessageBoxButtons.OK, MessageBoxIcon.Error)

        End If
    End Sub


    ---Event code button answers ---
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
           If TextBox1.Text = "rfb" And TextBox2.Text = "reflection" Then
               Form2.Show()
           Else
               MsgBox("Sorry, username or password not found", MsgBoxStyle.OkOnly, "Invalid")
           End If
       End Sub


    ---browser---
    Private Sub WebBrowserControl_Load(sender As Object, e As EventArgs) _
    Handles Me.Load
           WebBrowser1.GoHome()
       End Sub

       Private Sub GoButton_Click(sender As Object, e As EventArgs) _
    Handles GoButton.Click
           WebBrowser1.Navigate(AddressBar.Text)
       End Sub


       Private Sub BackButton_Click(sender As Object, e As EventArgs) _
    Handles BackButton.Click
           WebBrowser1.GoBack()
       End Sub

       Private Sub ForwardButton_Click(sender As Object, e As EventArgs) _
    Handles ForwardButton.Click
           WebBrowser1.GoForward()
       End Sub

       Private Sub RefreshButton_Click(sender As Object, e As EventArgs)  _
    Handles RefreshButton.Click
           WebBrowser1.Refresh()
       End Sub

       Private Sub HomeButton_Click(sender As Object, e As EventArgs)  _
    Handles HomeButton.Click
           WebBrowser1.GoHome()
       End Sub

       Private Sub WebBrowser1_DocumentCompleted(sender As Object, _
    e As WebBrowserDocumentCompletedEventArgs) _
               Handles WebBrowser1.DocumentCompleted
           Me.Text = WebBrowser1.DocumentTitle
           StatusLabel.Text = "Ready"
       End Sub

       Private Sub WebBrowser1_Navigating(sender As Object, _
    e As WebBrowserNavigatingEventArgs) _
    Handles WebBrowser1.Navigating
           StatusLabel.Text = "Loading..."
       End Sub

    ---
    http://www.visual-basic-tutorials.com/
    http://www.visual-basic-tutorials.com/Tutorials/Controls/Button.html


    Entwickler Microsoft Partner

    • Als Antwort markiert Felix24 Freitag, 18. August 2017 09:40
    • Tag als Antwort aufgehoben Felix24 Freitag, 18. August 2017 09:41
    Freitag, 18. August 2017 08:00
  • Danke erst mal für die Code-Beispiele,

    es ging mir in meinem Beispiel jedoch um ein VB Script, nicht um VB. Tut mir leid, wenn ich mich da eventuell nicht ganz klar ausgedrückt habe.

    Habe nach einigem probieren und recherchieren jetzt aber endlich eine funktionierende Lösung gefunden.

    Ich poste Sie mal noch hier für die Nachwelt herein, falls jemand das selbe Problem haben sollte:

    With CreateObject("InternetExplorer.Application")
    .TheaterMode = False
    .AddressBar = True
    .MenuBar = False
    .Resizable = True
    
    ' Hier die Fenstergröße definieren
    .Height = 1080
    .Width = 1920
    .Left = 0
    .Top = 0
    .FullScreen = False
    .Silent = False
    .Visible = True
    Wscript.Sleep 1000
    .Navigate url_Left
    Do While (.Busy Or .READYSTATE <> 4)
        Wscript.Sleep 250
    Loop
    Shell.AppActivate ("Am Panda-Konto anmelden - Internet Explorer")
    Set oInputs = .Document.getElementsByTagName("input")
    For Each elm In oInputs
    If elm.Value = "Anmelden" Then
    elm.Click
    Exit For
    End If
    Next

    Mit freundlichen Grüßen,

    Felix



    • Als Antwort markiert Felix24 Freitag, 18. August 2017 09:40
    • Bearbeitet Felix24 Freitag, 18. August 2017 09:45
    Freitag, 18. August 2017 09:40