调用点击 Cefsharp VB

Posted

技术标签:

【中文标题】调用点击 Cefsharp VB【英文标题】:Invoke Click Cefsharp VB 【发布时间】:2017-10-22 13:22:09 【问题描述】:

我想模拟对我的 Visual Studio vb 项目中的 Web 浏览器元素的单击或按键操作。 我已经找到了为 Visual Studio 内置的 webbrowser 对象执行此操作的方法,但我使用的是 cefsharp 浏览器,所以 weBrowser.Document.GetElementById('id').InvokeMember("Click") 不起作用,因为 cefsharp 不允许 .Document。所以我的问题,重申一下,我将如何使用 vb 来模拟对我的 cefsharp 网络浏览器的点击?感谢您提供任何帮助,祝您有愉快的一天。

编辑:我一直在处理这段代码: Dim elementID As String = "myBtn" Dim click As String = "Click" browser.ExecuteScriptAsync("Document.All(elementID).InvokeMember(click)") 但我不确定它是否会起作用或如何使用 elementID 部分(我不确定这里可以使用哪种网络元素)。也许这些额外的信息会有所帮助。

【问题讨论】:

你可以试试browser.ExecuteScriptAsync("document.all('myBtn').click()") @shudel .click() 是什么? 这将是按钮的 click() 函数。 w3schools.com/jsref/met_html_click.asp @schudel 请原谅我的提问,但让我们说我想以这种方式在谷歌中输入“堆栈溢出”。我该怎么做(仅供参考) 【参考方案1】:

使用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 VB的主要内容,如果未能解决你的问题,请参考以下文章

cefsharp停止request

cefsharp

从 CefSharp 1 中的 javascript 调用 .Net - wpf

CefSharp 与 JS 相互调用

cefsharp 关于C# 调用JavaScript的一个坑

js 调用 cefsharp 方法