我希望能够在我的cefsharp(铬)webbrowser中模拟对网页元素的点击或键盘输入。
假设我想输入"堆栈溢出,"例如,进入谷歌搜索框。我希望能够将该键盘输入模拟到谷歌搜索框web元素中,以便搜索框显示"堆栈溢出"它会像人类输入的堆栈溢出一样。"
研究:我已经找到了在visual studio web元素中执行此操作(未经测试)的方法,但不是铬。作为参考,我找到的代码是browser.Document.GetElementById('web element').InvokeMember("Click")
但是,我不知道它是否或如何工作。
我还找到了ExecuteScriptAsync
函数,但我不知道如何使用它。 我很确定我需要使用execucriptasync ,但我不确定我会使用哪些参数。
我的设置: 我正在使用visual basic,visual studio和cefsharp chrome-based web browser
问题:重申一下,我希望能够在cefsharp浏览器中模拟某些网页元素的按键和鼠标点击。
答案 0 :(得分: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`