Benutzer mit den meisten Antworten
Button auf einer Website per VBS klicken?

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
- Verschoben Dimitar DenkovMicrosoft contingent staff, Moderator Freitag, 18. August 2017 05:44 Die Frage bezieht sich auf Visual Basic Script (aus: Visual Basic)
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
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.htmlEntwickler Microsoft Partner
-
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