0

我正在尝试使用此代码段来测试具有特定文本的元素。

HtmlDocument element = webBrowser2.Document;

if (element.GetElementById("gbqfsa").InnerText == "Google Search")
{
     HasSucceeded = 1;
}
return HasSucceeded;

然而,第一行抛出异常“指定的强制转换无效”。我究竟做错了什么?

4

2 回答 2

2

您是否可能使用了错误的 HtmlDocument 类?WebBrowser.Document 属于以下类型:

System.Windows.Forms.HtmlDocument

但我注意到还有另一个可能的命名空间:

System.Windows.Browser.HtmlDocument

我会检查以确保您包含的命名空间是System.Windows.Forms.HtmlDocument

于 2013-07-23T23:32:05.183 回答
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;
    }
}
于 2019-06-15T13:15:33.540 回答