2017-10-23 2 views
0

Ich möchte in meinem cefsharp (chrom) webbrowser eine click- oder tastatureingabe in ein webelement simulieren können.Cefsharp webbrowser sende eingang

Sagen wir, ich möchte "Stack-Überlauf" zum Beispiel in die Google-Suchbox eingeben. Ich möchte in der Lage sein, diese Tastatureingabe in das Google-Suchfeld-Webelement zu simulieren, so dass das Suchfeld "Stapelüberlauf" anzeigt, und es würde so funktionieren, als ob ein menschlicher Typ "Stapelüberlauf" wäre.

Forschung: Ich habe Wege gefunden, dies zu tun (ungeprüft) in der visuellen Studio-Web-Element, aber nicht Chrom. Als Referenz ist der Code, den ich gefunden habe, browser.Document.GetElementById('web element').InvokeMember("Click"), aber ich weiß nicht, ob oder wie das funktioniert.

Ich habe auch die ExecuteScriptAsync Funktion gefunden, aber ich bin mir nicht sicher, wie man es benutzt. Ich bin mir ziemlich sicher, dass ich executscriptasync verwenden muss, aber ich bin mir nicht sicher, welche Parameter ich verwenden würde.

Mein Setup: ich Visual Basic, Visual Studio benutzen und der cefsharp Chrom-basierte Web-Browser

Die Frage: Um es zu wiederholen, ich möchte in der Lage sein, Drücken von Tasten und Maus zu simulieren klickt auf bestimmte Webelemente in einem Cefsharp-Browser.

Antwort

0

Dies ist nicht meine Antwort: Ich kopierte es von @shudel, also danke @shudel Allerdings wollte ich sicherstellen, dass diese Frage beantwortet wurde.

Mit ExecuteScriptAsync wird JavaScript für die Chrome-Engine ausgeführt, sodass Sie gültiges JavaScript an diese Funktion senden müssen. Der folgende Code zeigt, wie Sie eine Suche mit DuckDuckGo

Imports System.Threading 
Imports CefSharp 
Imports CefSharp.WinForms 

Public Class Form1 
    Private _browser As New ChromiumWebBrowser() 


    Sub New() 
    ' This call is required by the designer. 
    InitializeComponent() 

    ' Add any initialization after the InitializeComponent() call. 
_browser.Top = 10 
_browser.Left = 10 
_browser.Width = 600 
_browser.Height = 400 
Controls.Add(_browser) 
    End Sub 


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles 
Button1.Click 
    _browser.Load("https://duckduckgo.com/") 
'for simplicity just wait until page is downloaded, should be handled by LoadingStateChanged 
Thread.Sleep(3000) 
    Dim jsScript As String = <js><![CDATA[ 
    document.all("q").value = "stack overflow"; 
    document.all("search_button_homepage").click(); 
         ]]></js>.Value 
_browser.ExecuteScriptAsync(jsScript) 
    End Sub 


End Class` 
starten können