Cefsharp 网络浏览器发送输入
Cefsharp webbrowser send input
我希望能够在我的 cefsharp (chromium) 网络浏览器中模拟对网络元素的点击或键盘输入。
假设我想在 google 搜索框中输入 "stack overflow,"。我希望能够将键盘输入模拟到 google 搜索框 Web 元素中,以便搜索框显示 "stack overflow" 并且它会像人类键入 "stack overflow."
研究: 我已经在 visual studio 网络元素中找到了执行此操作(未经测试)的方法,但不是 Chromium。作为参考,我找到的代码是 browser.Document.GetElementById('web element').InvokeMember("Click")
但是,我不知道它是否有效或如何工作。
我也找到了ExecuteScriptAsync
这个功能,但是不知道怎么用。 我很确定我需要使用 executescriptasync,但我不确定我会使用什么参数。
我的设置:
我正在使用 visual basic visual studio 和基于 chromium 的 cefsharp Web 浏览器
问题: 重申一下,我希望能够在 cefsharp 浏览器中模拟按键和鼠标点击某些 Web 元素。
这不是我的回答:我是从@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`
我希望能够在我的 cefsharp (chromium) 网络浏览器中模拟对网络元素的点击或键盘输入。
假设我想在 google 搜索框中输入 "stack overflow,"。我希望能够将键盘输入模拟到 google 搜索框 Web 元素中,以便搜索框显示 "stack overflow" 并且它会像人类键入 "stack overflow."
研究: 我已经在 visual studio 网络元素中找到了执行此操作(未经测试)的方法,但不是 Chromium。作为参考,我找到的代码是 browser.Document.GetElementById('web element').InvokeMember("Click")
但是,我不知道它是否有效或如何工作。
我也找到了ExecuteScriptAsync
这个功能,但是不知道怎么用。 我很确定我需要使用 executescriptasync,但我不确定我会使用什么参数。
我的设置: 我正在使用 visual basic visual studio 和基于 chromium 的 cefsharp Web 浏览器
问题: 重申一下,我希望能够在 cefsharp 浏览器中模拟按键和鼠标点击某些 Web 元素。
这不是我的回答:我是从@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`