2016-07-24 5 views
0

Ich versuche, ein Programm zu schreiben, das eine einfache Browser-Suche in www.google.com mit dem WebBrowser-Steuerelement simuliert. Ich möchte wirklich nur Internetaktivitäten simulieren.Web-Suche mit dem WebBrowser-Steuerelement simulieren

Ich kam auf die Idee, eine Schleife zu verwenden, um eine Nummer an das Google-Suchfeld zu senden und dann Enter zu drücken.

Die Linie WebBrowser1.Document.GetElementById("q").SetAttribute("value", i) sendet erfolgreich jede Zahl in der Schleife zu dem Google-Suchfeld, aber die nächste Zeile WebBrowser1.Document.GetElementById("btnK").InvokeMember("Click") wird die Google-Suchtaste nicht initiieren. Ich bekomme keine Fehler.

Hat jemand irgendwelche Ideen, warum WebBrowser1.Document.GetElementById("btnK").InvokeMember("Click") nicht funktioniert?

Auch ich habe bemerkt, dass, wenn ich diesen Code ausführen und Internet Explorer starten, der Code stoppt. Hat jemand dazu auch noch Ideen?

Am meisten dankbar für jede Hilfe!

Grüße

George

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

    Call LoadBrowser() 

End Sub 

Private Sub LoadBrowser() 

    WebBrowser1.Navigate("http://www.google.com/") 

End Sub 

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

    ' Send search string 'i' to browser n times 
    Dim i As Integer 
    For i = 1 To 100 
     ' Browser search 
     WebBrowser1.Document.GetElementById("q").SetAttribute("value", i) 
     WebBrowser1.Document.GetElementById("btnK").InvokeMember("Click") 
     ' Pause n seconds before next loop 
     For x As Integer = 0 To 5 * 100 ' Pause for 5 seconds 
      Threading.Thread.Sleep(10) 
      Application.DoEvents() 
     Next 
    Next 

End Sub 
+0

Haben Sie versucht, "WebBrowser1.Document.GetElementById (" btnK "). InvokeMember (" Click ") außerhalb der Schleife? Weil es auf 100 Klicks klicken wird glaube ich – Werdna

+0

Hallo Werda, ja ich habe das versucht und immer noch nicht funktioniert. Wenn ich jede Nummer in der Schleife an das Google-Suchfeld sende, möchte ich die Google-Suche-Taste drücken, so dass am Ende der Schleife tatsächlich 100 Suchvorgänge durchgeführt werden. – georgemackenzie

+0

Ok ich warte auf einen Zug atm, sobald ich vor einem Computer bin versuche ich und gwt zurück zu dir :) – Werdna

Antwort

0

Ok, das Beispiel, das Sie uns gegeben haben, abarbeiten.
Versuchen Sie dies.

Imports WindowsInput '' <--------- 
''' <summary> 
''' This program will run quick slow, would be best to use another thread for it, I'll leave that to you. 
''' </summary> 

Public Class Form1 
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    WebBrowser1.Navigate("www.google.com.au") 
End Sub 
Private Async Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

    Dim SIM = New InputSimulator() ''Use NuGet package manager and search for Input Simulator at Import it at the top  
    For i = 0 To 100 

     WebBrowser1.Document.GetElementById("lst-ib").InvokeMember("Click") ''this will click on googles searchbox 
     WebBrowser1.Document.GetElementById("q").InnerText = i 
     Await Task.Delay(500) ''This will delay your code so you can see what is in the searchbox, I prefer this over Thread.Sleep, each to their own I guess. 
     WebBrowser1.Document.GetElementById("q").InvokeMember("Click") ''This will click on googles search box to get the delete simulator ready. 
     SIM.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.DELETE) '' This will delete whatever is in the searchbox since your original code was doing this and you didn't complain about it 
    Next 
    WebBrowser1.Document.GetElementById("lst-ib").InvokeMember("Click") ''ONCE the loop as completed it will click on googles search box 
    SIM.Keyboard.KeyPress(WindowsInput.Native.VirtualKeyCode.RETURN) '' Another keypress for the enter key (MAY NOT WORK DEPENDING IF YOU HAVE CLICK OFF THE WEBBROWSER CONTROL) maybe you can tab back to it? 
    'WebBrowser1.Document.GetElementById("sblsbb").InvokeMember("Click") ''if the above line doesn't work 
End Sub 
End Class 


Sorry für die langen Kommentare, ich versuche nur, Ihnen zu helfen, zu verstehen, was der Code tut und die möglichen Fehler, die Sie möglicherweise nicht mit möglichen Fehlerbehebung und oder Workarounds entlang begegnen.
Viel Glück.