真棒获取并单击标签属性

Awesomium Getting and clicking a Tags attribute

本文关键字:标签 属性 单击 获取      更新时间:2023-09-26

单击标记名称和属性的按钮时遇到问题。我可以使用按钮类点击它,如下所示:

public void Event(string getElementQuery, string eventName)
{
Control.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));
}
private void Reload_Tick(object sender, EventArgs e)
{
    Event("document.getElementsByClassName('Reload')[0]", "click");
}        

这很好,但有时我有不止一个按钮来重新加载类。我想使用标签为a和属性为RELOAD来更好地定义它。我用以下方法尝试过它,但它什么都没做:

Event("document.getElementsByTagName('a').getAttribute('RELOAD')[0]", "click");

这是有效的,但它点击了错误的按钮,这就是为什么我也需要属性。

Event("document.getElementsByTagName('a')[0]", "click");

但当我尝试获取属性时,什么也没发生。有人能帮帮我吗。

此处回答http://answers.awesomium.com/questions/5826/get-attribute-of-tag-and-invoke-click.html

我试过用下面的方法,但一点效果都没有document.getElementsByTagName('a').getAttribute('RELOAD')[0]

您应该在浏览器(Chrome)控制台中检查这样的代码。它甚至不会运行。

使用XPath。

    /// <summary>
    /// Returns JavaScript XPath query string for getting a single element 
    /// </summary>
    /// <param name="xpath">Any valid XPath string, for example "//input[@id='myid']"</param>
    /// <returns>JS code to perform the XPath query (document.evaluate(...)</returns>
    public static string GetJsSingleXpathString(string xpath)
    {
        return
            String.Format(
                "document.evaluate('"{0}'", document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue", xpath);
    }
    private void Reload_Tick(object sender, EventArgs e)
    {
        string jsXpath = GetJsSingleXpathString("//a[contains(@class, 'Reload')]");
        Event(jsXpath, "click");
    }