2016-07-29 93 views
1

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

你應該嘗試如下: -

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

編輯: - 你也可以與分開獲取元素3210分隔如下使用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")); 
} 

希望它能幫助... :)

+0

很抱歉,但它不能正常工作。在'lstTDElements'值是:'10 Good LuckNowadayhookzp'。 – vanloc

+0

@VănLộc確定嘗試使用'GetAttribute(「textContent」)'...查看更新的答案...在我的情況下,兩個工作都很好.. –

+0

values'textContent'應該是?在HTML中就是一個例子,在一個真正的項目中,它在表格中有很多標籤,所以你不僅可以設置爲'10Good LuckNowadayhookzp'。 – vanloc

相關問題