Awesomium点击标签C# - javascript

<a class="button" style="letter-spacing: -1px" href="/home" data-executing="0">Go Home</a>    

我正在尝试让Awesomium单击某个按钮,以上面的示例为例,没有ID只是一个标签

<a - and attribute being Go Home   

我一直在阅读如何执行此操作,他们说要使用此功能:

web.ExecuteJavascript(@"$('a').trigger('click');");    

这对我不起作用,不会产生点击。可能是因为我的测试网站使用了许多标签

<a     

有没有一种方法可以通过使用Awesomium中的“返回首页”属性“ a”来单击此按钮?我也尝试过,但也没有用:

        private void timer_Tick(object sender, EventArgs e)
    {

        if (web.IsDocumentReady)
        {

            dynamic document = web.ExecuteJavascriptWithResult("document");
            dynamic submit = document.getElementsByTagName('a');
            submit.Invoke("click");
        }
    }    

参考方案

如果此元素不是<button>,则可能没有click()方法。

您可以尝试以下方法进行检查:

JSObject btn = web.ExecuteJavascriptWithResult("document.getElementsByTagName('a')[0]");
if (btn.HasMethod("click"))
    btn.Invoke("click");
else
    // no such method

或使用动态方法(如果该方法不存在,将抛出异常):

dynamic btn = (JSObject) web.ExecuteJavascriptWithResult("document.getElementsByTagName('a')[0]");
btn.click();

您可以使用它来单击以下元素:

public void JsFireEvent(string getElementQuery, string eventName)
{
    web.ExecuteJavascript(@"
                        function fireEvent(element,event) {
                            var evt = document.createEvent('HTMLEvents');
                            evt.initEvent(event, true, false ); // event type,bubbling,cancelable
                            element.dispatchEvent(evt);                                 
                        }
                        " + String.Format("fireEvent({0}, '{1}');", getElementQuery, eventName));
}

例子:

JsFireEvent("document.getElementsByTagName('a')[0]", "click");

JsFireEvent("document.getElementsByTagName('a')[0]", "mouseup");

另外,您可能会发现这两个简单的帮助程序类很有用:https://gist.github.com/AlexP11223/8286153

第一个是用于WebView / WebControl的extension methods,第二个是一些静态方法来生成JS代码,以通过XPath检索元素(JSObject)+获取JSObject的坐标)

jQuery val函数在隐藏字段上不起作用? - javascript

这是我的HTML代码:<div style='display:none;' id='allformid'> <div> <form action='#'> <input type='text' name='name' …

如何在没有for循环的情况下在Javascript中使用Django模板标签 - javascript

我想在JavaScript中使用模板变量:我的问题是在javascript代码中使用for循环,for循环之间的所有事情都会重复..但我不想要....下面粘贴了我的代码..有人可以告诉我更好的方法吗这..因为这看起来很丑..这是我的代码: {% block extra_javascript %} <script src="/static/js…

使用JS和PHP更改弹出窗口背景图像 - javascript

我有一个JS函数:function zoom(now) { document.getElementById("popup").style.display = "block"; document.getElementById("photos").style.backgroundImage = …

打印二维阵列 - javascript

我正在尝试打印子元素。在this example之后。怎么做?。$myarray = array("DO"=>array('IDEAS','BRANDS','CREATIVE','CAMPAIGNS'), "JOCKEY"=>a…

获取JavaScript值到C#字符串 - javascript

                        是否可以在C#中执行类似的操作?该值为“ 10/05/2014”string jsValue = javascript("$('#EstimatedStartDate').val()"); 参考方案 您能否更详细地阐明您要做什么。看来您正在尝试从javascript(客户…