2016-02-06 59 views
1

总是空的使用GeckoFX浏览器,我使用的是最新GeckoFX-45浏览器vb.net。获取Recaptcha2的iFrame HTML,但在vb.net

我的问题: 我不能得到iframe的HTML。

这里是我的代码:

'Open Recaptcha2 test site 
Browser.Navigate("http://patrickhlauke.github.io/recaptcha/") 
'Wait for loading (all ways I know) 
Browser.NavigateFinishedNotifier.BlockUntilNavigationFinished() 
Dim maxTimeouttime As DateTime = DateTime.Now.AddSeconds(4) 
While DateTime.Now < maxTimeouttime 
System.Windows.Forms.Application.DoEvents() 
System.Threading.Thread.Sleep(100) 
End While 
While Browser.IsBusy() 
System.Windows.Forms.Application.DoEvents() 
System.Threading.Thread.Sleep(100) 
End While 

'Getting the HTML of the Iframe is always empty: 
For Each _E As GeckoIFrameElement In Browser.DomDocument.GetElementsByTagName("iframe") 
If _E.GetAttribute("title") = "recaptcha widget" Then 
Dim html = _E.ContentDocument '-> is empty 
Dim html2 = _E.OuterHtml '-> HTML does not include the content of the Iframe 
Exit For 
End If 
Next 

该网站显示相当不错,在浏览器和recaptcha2 IFRAME被加载并完全地准备好,但我怎么能编程访问它?

非常感谢您

回答

1

使用ContentWindow.Document而不是ContentDocument。您的代码应该是:

Dim iFr_dom As GeckoDomDocument 
Dim iFr_html As String 
For Each iFr As GeckoIFrameElement In Browser.DomDocument.GetElementsByTagName("iframe") 
    If iFr.GetAttribute("title") = "recaptcha widget" Then 
     iFr_dom = iFr.ContentWindow.Document 

     'DomDocument has no OuterHtml property so we use 
     iFr_html = iFr_dom.GetElementsByTagName("BODY")(0).OuterHtml 
     'Or if the above not work, use the code below 
     'iFr_html = iFr_doc.GetElementsByTagName("body")(0).OuterHtml 
     Exit For 
    End If 
Next