有点奇怪,但似乎没有什么可以和#34;占位符"在winforms c#的Web浏览器中。
在我的测试程序中,我试图从网站获取特定的输入字段,通过它""占位符"并在字段中设置一个值。名称和类别总是不同的,唯一的"足迹"是占位符。
例如在某些网站的html中,有以下代码的输入字段:
<input type="text" name="Username" placeholder="Username">
问题是通过查找占位符在字段中设置值。
我将输入元素用于:
HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input");
并使用循环htmlcol[i].GetAttribute("placeholder").Equals("Username").
搜索特定输入它只是不起作用
关于如何解决问题的任何想法或示例?
由于
答案 0 :(得分:0)
首先,您需要获取该容器元素然后您可以为其设置值
例如,
HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input");
foreach(HtmlElement he in htmlcol){
if(he.innerHtml.Contains("Username"))
he.SetAttribute("value",yourstring);
break;
}
答案 1 :(得分:0)
经过2天的测试后,我发现通过webbrowser访问时,输入字段(除了name,id,class和类似名称)内的占位符innerHtml中没有任何内容。我尝试像htmlcol[i].GetAttribute("placeholder").Equals("Username");
一样访问,但由于某种原因它没有用。
对我有用的是 OuterHtml ,类似这样:
HtmlElementCollection htmlcol = webBrowser1.Document.GetElementsByTagName("input");
for (int i = 0; i < htmlcol.Count; i++)
{
if (htmlcol[i].OuterHtml.Contains("Username"))
{
htmlcol[i].SetAttribute("value", pUsername.Text);
}
}
我希望我的回答可以帮助有关这个问题的人。
由于