我正在尝试使用此代码段来测试元素是否具有特定文本。
HtmlDocument element = webBrowser2.Document;
if (element.GetElementById("gbqfsa").InnerText == "Google Search")
{
HasSucceeded = 1;
}
return HasSucceeded;
但是第一行抛出异常“指定的强制转换无效”。我做错了什么?
答案 0 :(得分:2)
您是否可能使用了错误的HtmlDocument类? WebBrowser.Document的类型为:
System.Windows.Forms.HtmlDocument
但我注意到还有另一个可能的命名空间:
System.Windows.Browser.HtmlDocument
我会检查以确保您包含的名称空间为System.Windows.Forms.HtmlDocument
答案 1 :(得分:0)
从自定义用户控件将HtmlDocument作为属性返回时,我遇到了此问题。 (哪个嵌入式WebBrowser控件)
由于从其他线程访问文档而导致错误。
/// <summary>
/// Error version '
/// </summary>
public HtmlDocument Document
{
get
{
// Throw error 'Specified cast is not valid'
return this.webBrowserMain.Document;
}
}
但是我不知道为什么错误不是'CrossThread Operation access ...',但是下一个代码解决了我的问题
/// <summary>
/// Fixed version
/// </summary>
delegate HtmlDocument DlgGetDocumentFunc();
public HtmlDocument GetDocument()
{
if(InvokeRequired)
{
return (HtmlDocument)this.webBrowserMain.Invoke(new DlgGetDocumentFunc(GetDocument), new object[] { });
}
else
{
return this.webBrowserMain.Document;
}
}