没有id和名称的GetElementById

本文关键字:GetElementById id 没有 | 更新日期: 2023-09-27 18:14:01

我需要点击按钮"添加"在帖子新的wordpress表单,这个按钮是添加标签的帖子,麻烦的是,按钮没有值和id属性。就像那样

按钮HTML

input type="button" class="button tagadd" value="Add" tabindex="3"

我的尝试
webBrowser1.Document.GetElementById("button tagadd").InvokeMember("click");
webBrowser1.Document.GetElementById("Add").InvokeMember("click");

没有id和名称的GetElementById

"GetElementById不带id"

: -)

除非你可以改变按钮的标记

现在需要遍历整个DOM并在已知位置查找按钮。我建议添加jquery,如果还不存在,能够更容易的dom操作/搜索。

如果你添加jquery你可以这样做$(".tagadd").click()

你可以试试

webBrowser1.document.getElementsByClassName("tagadd")

编辑:这里是一个脚本创建getElementsByClassName函数,如果它不可用http://robertnyman.com/2008/05/27/the-ultimate-getelementsbyclassname-anno-2008/

还有这个http://msdn.microsoft.com/en-us/library/system.windows.forms.htmldocument.getelementsbytagname.aspx但是我从来没用过

  • 添加ID。即使你是动态生成按钮,这也应该是微不足道的

  • 如果你使用jQuery,

    $ (' .tagadd ')

将返回应用了tagadd类的所有内容的集合。您可以通过其他类(button等)进一步过滤

    使用
  • :

    onload = function () {如果文档。getElementsByClassName == undefined) {文档。getElementsByClassName = function(className){var hasClassName = new RegExp("(?:^|'s)")+ className + "(?:$|'s)");var allElements = document.getElementsByTagName("*");Var results = [];

        var element;
        for (var i = 0; (element = allElements[i]) != null; i++) {
            var elementClass = element.className;
            if (elementClass 
    

    ,,elementClass.indexOf(className) != -1,,hasClassName.test (elementClass))results.push(元素);}

        return results;
    }
    

    }}

  1. 一些浏览器提供getElementsByClassName()方法,它允许您按类选择而不使用jQuery(如果这是所有您需要的,这有点重)。我还没有测试过,所以我不确定它的支持范围有多广。

  2. 我提到过你应该给所有东西一个ID吗?

使用TagName作为示例

var elems = webBrowser1.Document.GetElementsByTagName("input");
        foreach (HtmlElement elem in elems)
        {
            if (elem.GetAttribute("class") == "button tagadd")
            {
                elem.InvokeMember("click");
            }
        }