如何在Selenium中添加标签之间的空格?

时间:2016-07-29 09:55:55

标签: c# html selenium

我使用Selenium从网页上的表格中获取数据。

我有HTML结构:

<table>
  <tbody>
    <tr>
       <td>
          <span>1</span>
          <span>0</span>
          <br>
          <span>
            <span>Good Luck</span>
            <img src="/App_Themes/Resources/img/icon_tick.gif" width="3" height="7">
          </span>
       </td>
    </tr>

    <tr>
      <td>
        <b>Nowaday<br></b>
        <p>hook<br>zp</p>
      </td>
    </tr>
  </tbody>
</table>

我使用此代码获取此表中的所有值:

ReadOnlyCollection<IWebElement> lstTable = browser.FindElements(By.XPath("table/tbody/tr"));
foreach (IWebElement val in lstTable)
{
     ReadOnlyCollection<IWebElement> lstTDElement = val.FindElements(By.XPath("td"));
}

但它显示的结果如下: 10Good LuckNowadayhookzp

我想这样结果:

1 0 Good Luck Nowaday hookzp

标签之间有空格。

我认为应该像这样添加&nbsp;

<span>1</span>
<span>&nbsp;</span>
<span>0</span>

<b>Nowaday<br></b>
<p>&nbsp;</p>
<p>hook<br>zp</p>

1 个答案:

答案 0 :(得分:1)

你应该尝试如下: -

ReadOnlyCollection<IWebElement> lstTDElements = browser.FindElements(By.TagName("td"));
var allTextList = lstTDElements.Select(El => EL.Text).ToList();
string FinalString = allTextList.Aggregate(new System.Text.StringBuilder(), (sb, s) => sb.Append(" "+s)).ToString().Replace("\n", "");
Console.WriteLine(FinalString);

已修改: - 您还可以使用|使用xpath分隔符获取单独的元素togethor,如下所示: -

ReadOnlyCollection<IWebElement> lstTable = browser.FindElements(By.XPath("table/tbody/tr"));
foreach (IWebElement val in lstTable)
{
     ReadOnlyCollection<IWebElement> lstTDElement = val.FindElements(By.XPath("//td/span | //td/b | //td/p"));
}

希望它有帮助...:)