2017-12-21 13 views
1

私はGeckofxでウェブサイトの値を読み取るプログラマを試してみたいです。今私は必要な値を取得しないと、それは私にそれがnullであることを示す次の問題があります。スパンから値を読み取る

<li id="box" class="tooltip" title=""> 
       <div class="classname"></div> 
       <span class="value"> 
        <span id="class_test" class="">48.066</span> 
       </span> 
</li> 

48.066は、私が読みたい値である:

HTMLコードは、私がアクセスできるようにします。

私は誰も私を助けることを願って、私のプライベートなプロジェクトで上に行くことができます解決のため、約2日間:)私が試した

ソリューションのために今すぐ検索:

テスト1:

GeckoElement testelement = null; 
testelement = (GeckoElement)Browser.Document.GetElementById("class_test"); 
string text = testelement.GetAttribute("value"); 

テスト2:

GeckoHtmlElement testelement = null; 
      testelement = (GeckoHtmlElement)Browser.Document.GetHtmlElementById("class_test"); 
      string text = testelement.InnerHtml; 
+0

2回目のテストでは、その行にブレークポイントを置いたときに 'testelement'には何が入りますか? 'testelement.InnerHtml'を呼び出すと、何が得られますか? – CodingYoshi

+0

testelementがまだnullで、.InnerHtmlがSystem.NullReferenceException例外をスローしました。 – MadIng

答えて

0

testelementがnullの場合、あなたはPをロードしていません年齢が正しく設定されているか、ソースが正しくありません。

これは正常に動作します:

string content = "<html><body><li id=\"box\" class=\"tooltip\" title=\"\">"+ 
    "<div class=\"classname\"></div>" + 
    "<span class=\"value\">" + 
    "<span id=\"class_test\" class=\"\">48.066</span>" + 
    "</span></li></body></html>"; 
webBrowser1.LoadHtml(content, "http://www.example.com"); 

そしてwebBrowser_DocumentCompleted中を:

GeckoElement testelement = null; 
testelement = (GeckoElement)webBrowser1.Document.GetElementById("class_test"); 
string text = testelement.InnerHtml; // 48.066 
0

ほとんどの場合、あなたはドキュメントが要素を探して前に読み込みが完了するまで待機する必要があります。

Browser.DocumentCompleted += (sender, e) => 
{ 
    var testElement = Browser.Document.GetElementById("class_test") as GeckoElement; 
    // TODO: handle testElement being null 
    string text = testElement.GetAttribute("value"); 
} 
関連する問題