Javascript Awesomium点击标签C#
这对我不起作用,它不会产生点击。这可能是因为我的测试站点有许多使用Javascript Awesomium点击标签C#,javascript,c#,jquery,awesomium,Javascript,C#,Jquery,Awesomium,这对我不起作用,它不会产生点击。这可能是因为我的测试站点有许多使用 web.ExecuteJavascript(@"$('a').trigger('click');"); 如果此元素不是,则它可能没有click()方法 您可以尝试以下方法进行检查: private void timer_Tick(object sender, EventArgs e) { if (web.IsDocumentReady) {
web.ExecuteJavascript(@"$('a').trigger('click');");
如果此元素不是
,则它可能没有click()
方法
您可以尝试以下方法进行检查:
private void timer_Tick(object sender, EventArgs e)
{
if (web.IsDocumentReady)
{
dynamic document = web.ExecuteJavascriptWithResult("document");
dynamic submit = document.getElementsByTagName('a');
submit.Invoke("click");
}
}
或者使用动态(如果方法不存在,将引发异常):
您可以使用此选项单击这些元素:
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));
}
此外,您可能会发现这两个简单的帮助器类很有用:
第一个用于WebView/WebControl,第二个用于生成JS代码,用于通过XPath+获取JSObject的坐标来检索元素(JSObject)您是否尝试过
document.getElementsByTagName('a')[0]。单击()代码>?当然,如果您需要先单击……这对默认浏览器很好,但对awesomium不起作用,因为awesomium不包含文档的定义。我已经试过了。如果您指的是web.ExecuteJavascript(“document.getElementsByTagName('a')[0]。click()”代码>这也不起作用。它并没有显示任何错误,但仍然并没有做任何事情。好吧,你们可以通过移动鼠标到屏幕上的这个链接矩形来点击,并触发鼠标左键点击。我在我的一个项目(用C#编写并使用Awesomium)中有这个。因此,您需要DOM元素的.getBoundingClientRect()
方法,公共静态外部无效鼠标事件(UInt32 dwFlags、Int32 dx、Int32 dy、Int32 cButtons、IntPtr dwExtraInfo)代码>和公共静态外部bool GetCursorPos(out Point lpPoint)代码>,都来自user32.dll([DllImport(“user32.dll”)]
)。这是一种很难的方法(我确实需要这样做),但也许你也必须这样做。因为Awesomium是基于铬的(就我所记得的而言),我建议谷歌提供所有通过JS触发点击的方法,而不是使用C#(例如,link.firevent(“onclick”)
)。顺便说一下,document
元素确实存在。
private void timer_Tick(object sender, EventArgs e)
{
if (web.IsDocumentReady)
{
dynamic document = web.ExecuteJavascriptWithResult("document");
dynamic submit = document.getElementsByTagName('a');
submit.Invoke("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");