我使用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
标签之间有空格。
我认为应该像这样添加
:
<span>1</span>
<span> </span>
<span>0</span>
和
<b>Nowaday<br></b>
<p> </p>
<p>hook<br>zp</p>
答案 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"));
}
希望它有帮助...:)