我似乎无法弄清楚如何将值文本放到Webbrowser C#上的texbox.Text中,因为这个网站的值会发生变化,输入代码会有重复,并且无法确定Webbrowser是否会将更改后的值用户名放入textbox.Text,如下面的截图所示。
我希望有人知道如何使用C#中的Webbrowser执行此操作 提前谢谢。
这是我尝试从fakepersongenerator
获取用户名的网站答案 0 :(得分:0)
您需要手动扫描DOM并根据它的xpath找到该元素。像这样:
webBrowser.DocumentCompleted += (o, e) =>
{
var frame1 = webBrowser.Document.Body.GetElementsByClassName("frame-1");
if (frame1.Count > 0)
{
var rows = frame1[0].GetElementsByClassName("row no-margin");
if (rows.Count > 4)
{
var usernameForm = rows[4].GetElementsByClassName("form-control");
if (rows.Count > 0)
{
// Do something with value here
Console.WriteLine(usernameForm[0].GetAttribute("value"));
}
}
}
};
webBrowser.Navigate("http://www.fakepersongenerator.com/Index/generate");
扩展类:
internal static class Utils
{
internal static List<HtmlElement> GetElementsByClassName(this HtmlElement doc, string className = "")
{
var list = new List<HtmlElement>();
foreach (HtmlElement e in doc.All)
if (e.GetAttribute("className") == className)
list.Add(e);
return list;
}
}
在网页加载后,默认网络浏览器中无法检测到更改,因此如果您想监控更改,则必须设置BackgroundWorker
或Timer
轮询浏览器并手动查找值更改。