2017-10-23 16 views
0

cefsharp (chromium) 웹 브라우저에서 웹 요소에 대한 클릭 또는 키보드 입력을 시뮬레이트 할 수 있기를 원합니다.Cefsharp webbrowser send 입력

"스택 오버플로"를 Google 검색 창에 입력하고 싶습니다. 검색 상자에 "스택 오버플로"라고 표시되고 사용자가 "스택 오버플로"를 입력 한 것처럼 작동하도록 키보드 입력을 Google 검색 상자 웹 요소에 시뮬레이트 할 수 있기를 원합니다.

연구 : Visual Studio 웹 요소에서는 크롬을 제외하고 이것을 수행하는 방법을 알아 냈습니다. 참고로, 내가 찾은 코드는 browser.Document.GetElementById('web element').InvokeMember("Click")이지만, 이것이 작동하는지 또는 어떻게 작동하는지 모르겠습니다.

나는 또한 ExecuteScriptAsync 기능을 찾았지만 사용 방법을 잘 모르겠습니다. 나는 executecriptasync을 사용할 필요가 있다고 확신하지만, 어떤 매개 변수를 사용할 지 확신하지 못합니다.

내 설정 : 나는 시각 기본, 비주얼 스튜디오를 사용하고 하고 cefsharp 크롬 기반의 웹 브라우저

[질문 :가 나는 키 누름와 마우스를 시뮬레이션 할 수 있도록하고 싶습니다, 반복하려면 cefsharp 브라우저에서 특정 웹 요소를 클릭합니다.

답변

0

이것은 내 대답이 아닙니다 : @shudel에서 복사 했으니 @shudel 고맙습니다. 그러나이 질문에 답을 얻고 싶었습니다.

ExecuteScriptAsync를 사용하면 Chrome 엔진에 대해 JavaScript가 실행되므로 유효한 JavaScript를이 함수에 보내야합니다. 다음 코드는 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`