如何在 WPF Web 浏览器中使用 C# 将字符串插入输入字段
本文关键字:字符串 插入 字段 输入 WPF Web 浏览器 | 更新日期: 2023-09-27 17:56:05
我在Stackoverflow上找到了很多关于这个问题的信息,但看起来我仍然缺少一些东西。使用Web浏览器,我想在某个网页的输入字段中填写一个字符串。通过单击按钮,我希望在输入字段中放置一些文本。
这是我的代码:
using System.Windows.Forms;
和功能:
private void button2_Click(object sender, RoutedEventArgs e)
{
HtmlDocument doc = (HtmlDocument)webBrowser1.Document;
doc.GetElementsByTagName("input")["username"].SetAttribute("Value", "someString");
}
第二个按钮处理 webBbrowser1.Navigate 方法。
然后我得到这个错误:
{"无法强制转换类型为 'mshtml.HTMLDocumentClass"到类类型"System.Windows.Forms.HtmlDocument"。表示 COM 组件的类型实例不能强制转换为不表示 COM 组件的类型;但是,只要基础 COM 组件支持对接口的 IID 的 QueryInterface 调用,就可以将它们强制转换为接口。
有什么想法吗?谢谢。
错误发生在以下行中:
HtmlDocument doc = (HtmlDocument)webBrowser1.Document;
看看这个。 WPF 中的webBrowswer1.Document
返回Microsoft.mshtml.HTMLDocuement
因此 要么添加对 Microsoft.mshtml 的引用,然后:
private void button2_Click(object sender, RoutedEventArgs e)
{
var doc = webBrowser1.Document as mshtml.HTMLDocument;
var input = doc.getElementsByTagName("input");
foreach (mshtml.IHTMLElement element in input)
{
if (element.getAttribute("name") == "username")
{
element.setAttribute("value", "someString");
break;
}
}
}
或
private void button2_Click(object sender, RoutedEventArgs e)
{
dynamic doc = webBrowser1.Document;
dynamic input = doc.getElementsByTagName("input");
foreach (dynamic element in input)
{
if (element.getAttribute("name") == "username")
{
element.setAttribute("value", "someString");
break;
}
}
}
欲了解更多信息:
- 如何从 WPF Web 浏览器获取 HtmlElementCollection。
- 使用 HtmlElement(Collection) 和 Web 浏览器查找 html 中的特定数据