gpt4 book ai didi

javascript - Awesomium 点击标签 C#

转载 作者:行者123 更新时间:2023-12-02 16:51:36 24 4
gpt4 key购买 nike

<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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com