【问题标题】:Awesomium How to click a div link - .click() does not work (vb.net)Awesomium 如何单击 div 链接 - .click() 不起作用(vb.net)
【发布时间】:2016-01-25 16:38:42
【问题描述】:

我喜欢点击 div 标签链接。 这是 HTML 代码:

<div class="m7"><div class="mB k7"></div><div class="mB l7"></div></div><span style="-moz-user-select: none;" role="button" class="d-s aj mqa" tabindex="0"><div class="yl kH"></div><div class="dv">Link</div></span>

我在我的 vb.net 应用程序上使用了这段代码:

webControl1.ExecuteJavascript("document.getElementsByClassName('dv')[0].click();")

但它没有点击,也没有打开弹出窗口。 当我在我的 Firefox 浏览器中的开发人员控制台中执行代码时,它运行良好。 因此,不是 getElementsByClassName 选择不起作用,而是 Awesomium 在这里不起作用。

请帮帮我。

谢谢

干杯

【问题讨论】:

  • 试试我在下面发布的解决方案。

标签: javascript .net vb.net click awesomium


【解决方案1】:

由于 div 元素没有任何click 方法,我们必须将其添加。 这是一个添加click方法的javascript:

function AddClickMethod(element, event) {
   var e = document.createEvent('HTMLEvents'); 
   e.initEvent(event, true, false); 
   element.dispatchEvent(e); 
}

然后在 Visual Basic.NET 中使用它

您只需使用参数document.getElementsByClassName('dv')[0]click 调用javascript 函数

webControl1.ExecuteJavascript("function AddClickMethod(element, event) {var e = document.createEvent('HTMLEvents'); e.initEvent(event, true, false); element.dispatchEvent(e); } AddClickMethod(document.getElementsByClassName('dv')[0], 'click');")

【讨论】:

  • 首先,感谢您的详细解答!但不幸的是,它不起作用。登录plus.google.com 并尝试点击方框来发新帖。在开发人员控制台中它可以工作,但不适用于 awesomium...
  • 我会调查的。
  • 感谢您的帮助,希望您能成功:)
【解决方案2】:

这是不可能的,因为 Awesomium 已经过时了。这是 Awesomium 的问题。

所以结果是:切换到 cefSharp(chrome 浏览器)或 GeckoFX-45(Firefox) 机器人是免费的。还有一个进一步开发的 Awesomium,名为 DotNetBrowser,但每个许可证 >1000 美元。

【讨论】:

    【解决方案3】:

    或者试试invokemember方法..

     getElementsByClassName("dv")(0).InvokeMember("click")
    

    使用我的自定义函数库..

    ''' <summary>
    ''' returns a collection of all elements in the document with the specified class name, as a NodeList object.
    ''' </summary>
    ''' <param name="className">specified class name</param>
    Function getElementsByClassName(ByVal className) As HtmlElement()
        Dim c As New List(Of HtmlElement)
        For Each a As HtmlElement In WebBrowser1.Document.All
            If a.GetAttribute("className").Equals(className) Then
                c.Add(a)
            End If
        Next
        Return c.ToArray
    End Function
    

    【讨论】:

    • 恐怕我误读了网络浏览器和网络控制...这是一个 asp.net 问题
    • 嗨,这是关于 awesomium 而不是标准的网络浏览器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2014-07-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-04
    相关资源
    最近更新 更多