【问题标题】:How to add whitespace between tags in Selenium?如何在 Selenium 中的标签之间添加空格?
【发布时间】:2016-12-03 23:53:22
【问题描述】:

我使用 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

标签之间有空格。

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

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

还有:

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

【问题讨论】:

    标签: c# html selenium


    【解决方案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 将单独的元素与| 分隔符一起获取,如下所示:-

    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"));
    }
    

    希望对您有所帮助...:)

    【讨论】:

    • 抱歉,它不起作用。 lstTDElements 的值是:10Good LuckNowadayhookzp
    • @VănLộc 好的尝试使用GetAttribute("textContent")...查看更新的答案...在我的情况下两者都工作正常..
    • textContent 应该是什么?以 HTML 为例,在实际项目中,表格中有很多 标签,所以不能只设置为10Good LuckNowadayhookzp
    • @VănLộc yes offcourse textContent 相当于文本。但是,您可以通过任何方式在 xpath 中使用 | 分隔符或条件来获取单独的元素,这将为您提供所有分隔的文本。尝试更新答案..:)
    • 非常感谢@SaurabhGaur。编辑您的答案后,它将创建许多行(在我发现大约 6000 的 标记中),并且我不知道如何排列正确的列。因为每一列,数据都可以是空的,也可以有很多值。当前,我有lstTable 包含两列(实际:10 列)。 lstTDElement 包含所有必要的数据。如何使用正确的列将lstIDElementlstTable 集成。在条件下使用foreach
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签