2016-06-08 43 views
0

我有html頁面:如何通過標題索引與水豚「找到」獲取數據元素?

<html> 
 
    <body> 
 
    <th>a</th> 
 
    <th>b</th> 
 
    <th>c</th> 
 
    <th>d</th> 
 
    <th>e</th> 
 
    <th>f</th> 
 
    <th>g</th> 
 
    <th>h</th> 
 
    <th>i</th> 
 
    <td>1</td> 
 
    <td>2</td> 
 
    <td>3</td> 
 
    <td>4</td> 
 
    <td>5</td> 
 
    <td>6</td> 
 
    <td>7</td> 
 
    <td>8</td> 
 
    <td>9</td> 
 
    </body> 
 
</html>

我需要通過選擇標題(日標),以獲得數據(td標籤)。 我想:

page.find(:xpath, "//body/td[count(//body/th[contains(.,'a')]/preceding-sibling::th)-1]") 

,我期待得到「1」爲返回值,但它返回「8」。 在我看來,「數」並不正確。那麼,我做錯了什麼?

回答

1

邏輯應該已經計數前同輩th加1,找到th的正確位置索引:

//body/td[count(//body/th[contains(.,'a')]/preceding-sibling::th)+1] 

xpathtester demo

輸出:

<td>1</td> 
+0

因此我得出結論xpath表達式是正確的。但是無論我選擇什麼樣的標題(th標籤),它總是返回「1」。也許問題是在水豚「發現」的方法? – andgursky

+0

不一定。當count()中的表達式找不到目標元素時(它可能表示XPath不正確),它也會返回「1」(索引1處的'td')... – har07

+0

一切正常!謝謝! – andgursky