title: How to get inner text from span which include other hidden span?
body: <p>I have some test html page</p>
  
  <pre><code>&lt;!DOCTYPE html&gt;
  &lt;html lang="en" xmlns="http://www.w3.org/1999/xhtml"&gt;
  &lt;head&gt;
      &lt;meta charset="utf-8" /&gt;
      &lt;title&gt;Page for test&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
      &lt;div class="r_tr"&gt;
          &lt;span class="r_rs"&gt;Inner text&lt;span class="otherSpan" style="display: none"&gt;text&lt;/span&gt;&lt;/span&gt;
      &lt;/div&gt;
  &lt;/body&gt;
  &lt;/html&gt;
  </code></pre>
  
  <p>I want to get "Inner text".
  I am using HtmlAgilityPack.
  I write this method </p>
  
  <pre><code>public string GetInnerTextFromSpan(HtmlDocument doc)
  {
      const string rowXPath = "//*[@class=\"r_tr\"]";
      const string spanXPath = "//*[@class=\"r_rs\"]";
      string text = null;
      HtmlNodeCollection rows = doc.DocumentNode.SelectNodes(rowXPath);
      foreach(HtmlNode row in rows)
      {
          text = row.SelectSingleNode(spanXPath).InnerText;
          Console.WriteLine("textL {0}", text);
      }
      return text;
  
  }
  </code></pre>
  
  <p>but this method return "Inner texttext".
  I write some unit test for explain my problem</p>
  
  <pre><code>[Test]
  public void TestGetInnerTextFromSpan()
  {
      var client = new PromtTranslatorClient();
      var doc = new HtmlDocument();
      doc.Load(@"testPage.html");
      var text = client.GetInnerTextFromSpan(doc);
      StringAssert.AreEqualIgnoringCase("Inner text", text);
  }
  </code></pre>
  
  <p>and result</p>
  
  <pre><code>Expected string length 10 but was 14. Strings differ at index 10.
    Expected: "Inner text", ignoring case
    But was:  "Inner texttext"
    ---------------------^
  </code></pre>