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

Awesomium How to click a div link - .click() does not work (vb.net)

我喜欢点击 div 标签 link。 这是 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 在这里不起作用。

请帮助我。

谢谢

干杯

由于div元素没有任何click方法,所以我们必须把它加起来。 这里有一个javascript添加一个click的方法:

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');")

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

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

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