我在C#winforms app中使用Awesomium点击网页内的div。
如果您直接在Google Chrome中输入以下脚本,则可以正常运行:
javascript: document.getElementById('ac_play').click();
但是当我尝试使用以下任一项在awesomium中执行它时:
webControl1.ExecuteJavascript("document.getElementById('ac_play').click();");
或者这个:
webControl1.LoadURL("javascript: document.getElementById('ac_play').click();");
它不起作用。这让我觉得 - Awesomium是否支持“div点击”?或者也许还有另一个原因导致它无法正常工作?
我也尝试过执行代码:
像往常一样 - 没有任何工作。
修改
我在GeckoFX上测试了相同的javascript,它也没有在那里工作..任何解决方法?
EDIT2
Standart WebBrowser控件完美地执行脚本! (虽然它使用IE5左右......这就是为什么我希望看到Awesomium解决方案正常工作)。
P.S。它在webcontrol中工作,现在不是;(我该如何重置它? P.P.S.我删除了IE中的缓存,但使用标准的WebBrowser是不可靠的。
答案 0 :(得分:1)
请记住,您必须等待DocumentReady
DocumentReadyState
事件Loaded
为Ready
(而不是private void WebControl_DocumentReady(object sender, DocumentReadyEventArgs e)
{
if (e.ReadyState != DocumentReadyState.Loaded) return;
//Here ExecuteJavascript should work
}
- 因为然后Awesomium尚未准备就绪)
reduce
答案 1 :(得分:0)
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");