Awesomium如何点击div链接 - .click()不起作用(vb.net)

时间:2016-01-25 16:38:42

标签: javascript .net vb.net click awesomium

我想点击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在这里不起作用。

请帮帮我。

由于

干杯

3 个答案:

答案 0 :(得分: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');")

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

或尝试使用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