Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#按名称获取元素_C#_Html_Getelementbyid_Getelementsbyname - Fatal编程技术网

C#按名称获取元素

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

所以我已经知道了如何通过id获取元素,但我不知道如何通过名称获取元素

private void SendData()
{

webBrowser1.Document.GetElementById(“textfield1”) .SetAttribute(“值”,textBox1.Text);
webBrowser1.Document.GetElementById(“textfield2”) .SetAttribute(“值”,textBox1.Text); }
问题在于HTML
textfield1
是一个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);