javascript - Awesomium 点击标签 C#

标签 javascript c# jquery awesomium

<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”的“Go Home”属性来点击这个按钮?我也尝试过这个,但它也不起作用:

        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

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

关于javascript - Awesomium 点击标签 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26559703/

相关文章:

javascript - ExtJS 4,不同的行字段

javascript - 合成:如何根据单选按钮中的选定选项动态更改 Canvas 新绘图?

javascript - Dijkstra 不会在同一点开始和结束

c# - 如何增加 ASP .NET Core 3.0 应用程序中的最大线程数

jquery - 使用 Jquery Isotope 插件动态插入项目后,如何将默认过滤器应用于容器?

javascript - 单击 jquery/js 中的搜索按钮捕获搜索 url

c# - 如何从按钮 Click 上的 DataList 页脚获取信息

c# - 使用 Roslyn 时如何验证方法中的参数类型

jquery - 单击同一按钮的动画菜单

php - 从 PHP 到 jquery