没有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");
"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; }
}}
和
-
一些浏览器提供
getElementsByClassName()
方法,它允许您按类选择而不使用jQuery(如果这是所有您需要的,这有点重)。我还没有测试过,所以我不确定它的支持范围有多广。 -
我提到过你应该给所有东西一个ID吗?
使用TagName作为示例
var elems = webBrowser1.Document.GetElementsByTagName("input");
foreach (HtmlElement elem in elems)
{
if (elem.GetAttribute("class") == "button tagadd")
{
elem.InvokeMember("click");
}
}