2016-07-09 55 views
1

我在Stackoverflow上发现了很多有关此问题的信息,但看起来我仍然缺少一些东西。使用Webbrowser,我想在某个网页的输入字段中填入一个字符串。通过点击一个按钮,我希望在输入字段中输入一些文本。如何在WPF中使用C#在输入字段中插入字符串Webbrowser

这是我的代码:

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组件的类型;但只要底层COM组件支持QueryInterface调用接口的IID,它们就可以转换为接口。“}

任何想法?谢谢。

回答

2

错误发生在这条线:

HtmlDocument doc = (HtmlDocument)webBrowser1.Document; 

看看thiswebBrowswer1.Document在WPF返回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; 
     } 
    } 
} 

的详细资料:

+0

谢谢。它的工作。 :) – Tomaz77

相关问题