C#按名称获取元素
所以我已经知道了如何通过id获取元素,但我不知道如何通过名称获取元素C#按名称获取元素,c#,html,getelementbyid,getelementsbyname,C#,Html,Getelementbyid,Getelementsbyname,所以我已经知道了如何通过id获取元素,但我不知道如何通过名称获取元素 private void SendData() { webBrowser1.Document.GetElementById(“textfield1”) .SetAttribute(“值”,textBox1.Text); webBrowser1.Document.GetElementById(“textfield2”) .SetAttribute(“值”,textBox1.Text); } 问题在于HTMLtextfield1
private void SendData()
{
webBrowser1.Document.GetElementById(“textfield1”)
.SetAttribute(“值”,textBox1.Text);
webBrowser1.Document.GetElementById(“textfield2”)
.SetAttribute(“值”,textBox1.Text);
}
问题在于HTMLtextfield1
是一个id,而textfield2
是一个名称。所以我想知道如何获取textfield2
:
您可以使用获取元素的值
webBrowser1.Document.GetElementsByName("textfield2").SetAttribute("value", textBox1.Text);
编辑
您不能直接按名称访问元素,但可以通过先查找输入标记,然后对结果进行索引以按名称查找标记来访问元素
webBrowser1.Document.GetElementsByTagName("input")["textfield2"]
或
您可以获得一个
HtmlElementCollection
——例如,使用GetElementsByTagName
方法。然后,HtmlElementCollection
具有GetElementsByName
方法:
webBrowser1.Document
.GetElementsByTagName("input")
.GetElementsByName("textfield2")[0]
.SetAttribute("value", textBox1.Text);
什么是webBrowser1和文档?您使用的是什么库/框架?@kai它是一个简单的
系统.Windows.Forms.WebBrowser
及其HtmlDocument
。您确定代码按预期工作吗。GetElementsByName应该返回一个数组,因此您必须在.SetAttribute之前使用[0],否则我是不是弄错了?出于某种原因,我没有这样的方法。。。我正在使用.NET 4.5。HtmlDocument
不包含此类方法,这不会编译.webBrowser1.Document.GetElementsByName(“textfield2”).SetAttribute(“value”,textBox2.Text);webBrowser1.Document.GetElementsByName(“登录”).InvokeMember(“单击”);我尝试过这个方法,但无法使其正常工作。我需要在代码中添加一些内容吗?您好,webBrowser1.Document.GetElementsByName(“textfield2”).SetAttribute(“value”,textBox2.Text);将获取元素集合,而不是像getelementbyid中那样的单个元素。请尝试webBrowser1.Document.GetElementsByName(“textfield2”)[0].SetAttribute(“值”,textBox1.Text);如果不工作,您可以发布错误代码的具体内容。我想知道html是否已完全加载。
webBrowser1.Document
.GetElementsByTagName("input")
.GetElementsByName("textfield2")[0]
webBrowser1.Document
.GetElementsByTagName("input")
.GetElementsByName("textfield2")[0]
.SetAttribute("value", textBox1.Text);