HTML要素とフレームを操作する」で躓いています
とても為になるブログで感謝しております。当方、VB.NETの初心者ですが
「4.1. Internet Explorer(IE)の基本的操作」の中で
「Internet Explorer(IE)を起動する」までは動作できました。
次の「HTML要素とフレームを操作する」で躓いています。
サンプルをネット上に作って次のソースを動かしました。
1 Dim ie As New IEWrapper()
2 ie.NewIE("http://XXX.XXX.XXX/")
3 ie.RootElement().Element("html", 0).Element("body", 0).Element("table", 0).Element("tr", 3).Element("td", 2)
まず、3行にブレークポイントを置き、ここまで来てステップインで動きを追っていくと、Element("html", 0)は正常に通過、つぎのElement("body", 0)で
4 Function Element(ByVal tagName As String) As mshtml.IHTMLElementCollection
5 Return _currentElement.getElementsByTagName(tagName)
6 End Function
のプログラムの5行でエラー発生、「NullReferenceExceptionはハンドルされませんでした。オブジェクト参照がオブジェクトインスタンスに設定されていません」のメッセージが出ました。
解決のヒントになることがあればご教授をお願いします。
  • 佐藤忠政
  • MAIL
  • 2013/10/25 (Fri) 20:10:02
Re: HTML要素とフレームを操作する」で躓いています
右京です。

_currentElement がNullだからNullReferenceExceptionが発生していますね。

ie.RootFrame().RootElement().Element("html", 0). ・・・・・

のように、「RootFrame()」をいれてみてください。
  • 右京
  • 2013/10/27 (Sun) 13:10:55
Re: HTML要素とフレームを操作する」で躓いています
返答、ありがとうございます。
RootFrame()を入れてみましたが、状況は変わらずでした。
正常時(Element("html", 0))とエラー発生直時(Element("body", 0))の間でいつNothingになるかを調べました。
正常時のElement("html", 0)後をステップで追っていくと
1 Function Element(ByVal tagName As String, ByVal indexNum As Integer) As IEWrapper
2  currentElement = DirectCast(Element(tagName)(indexNum), mshtml.IHTMLElement2)
3  Return Me
4 End Function
5 Function Element(ByVal tagName As String) As mshtml.IHTMLElementCollection
6  Return _currentElement.getElementsByTagName(tagName)
7 End Function
のプログラムにおいて
1→2→5→6→7→2→3→4→次のElement("body", 0)
のステップとなり、7→2で_currentElementがNothingになりました。
なお、関係するかわかりませんが、IEのバージョンはVer8で,開発はVisualBasic2010Expressです。DLL等は合わせてあるつもりです。
御厄介をおかけしますが、よろしくお願いします。
  • 佐藤忠政
  • MAIL
  • 2013/10/27 (Sun) 21:00:17

返信フォーム






プレビュー (投稿前に内容を確認)