在awesomium执行JavaScript点击一个div(executing javascript

2019-09-21 12:39发布

我在C#WinForms应用程序使用Awesomium点击网页内的一个div。

如果直接在谷歌浏览器键入以下脚本非常有效:

javascript: document.getElementById('ac_play').click();

但是当我尝试使用awesomium要么执行:

webControl1.ExecuteJavascript("document.getElementById('ac_play').click();");

或这个:

webControl1.LoadURL("javascript: document.getElementById('ac_play').click();");

它不工作。 这让我想到 - 不Awesomium支持“DIV点击”与否? 或者,也许还有另外一个原因,为什么它不工作?

我也试图执行的代码:

  • 在LoadCompleted事件(以确保在页面完全加载)
  • 通过在“addressBox1”(天然awesomium“地址栏”控制)手动键入脚本

像往常一样 - 没有什么工作。

编辑:

我测试过在GeckoFX同javascript和它也不在那里工作。任何解决方法吗?

EDIT2

非标准WebBrowser控件完全执行脚本! (虽然它的使用IE5或使..这就是为什么我想看到Awesomium解决方案的工作)。

PS它是在三夏工作,现在不是(我如何重置PPS我删除IE浏览器中的缓存,但它是不可靠的sooo使用标准的web浏览器..?

Answer 1:

请记住,你必须等待DocumentReady与事件DocumentReadyStateLoaded (未Ready -因为那时Awesomium是尚未完全准备就绪)

private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e)
{
    if (e.ReadyState != DocumentReadyState.Loaded) return;
    //Here ExecuteJavascript should work
}


Answer 2:

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

JsFireEvent("document.getElementById('ac_play')", "click");

链接



文章来源: executing javascript in awesomium to click on a div