2012-05-23 100 views
4

我有一個包含多行的表,並且我試圖使用xpath來查找包含每列中特定值的一行。例如,我期望第1列中的「foo」,第2列中的「bar」和第3列中的「baz」。xpath選擇在列中有幾個特定值的tr

我可以使用哪些xpath來獲取包含那些特定列中的三個特定值的行?

例如,下面的表我希望能夠找回只有一行的三個預期值在其預期的列

<table> 
    <tr><td>foo</td><td>bar</td><td>xxx</td></tr> 
    <tr><td>xxx</td><td>bar</td><td>baz</td></tr> 
    <tr><td>foo</td><td>bar</td><td>baz</td></tr> 
    <tr><td>bar</td><td>baz</td><td>foo</td></tr> 
    <tr><td>foo</td><td>xxx</td><td>baz</td></tr> 
</table> 

回答

13

這時候是卓有成效的(假設table元素是當前上下文節點):

tr[(td[1] = 'foo') and (td[2] = 'bar') and (td[3] = 'baz')] 

td[1]選擇第一個td子,td[2]第二個等,然後將條件與and相結合。

-1

可以使用directorypath\[name="value"]\...給出搜索

+0

我知道,但是如何組合多個條件?我需要「與‘富’兩列用‘吧’......的文字文本一列TR」 –

+0

這樣,可以在TR內搜索「​​FOO​​酒吧​​巴茲」? – TJF

+0

我想找到任何,具體在第1列中有「foo」,在第2列中有「bar」,在第3列中有「baz」。 –

1

這也做的伎倆......我敢肯定有更快的方式得到你想要的東西,雖然,通過不使用XPath ..

// TR [TD [1] [文本()= 'foo']和td [2] [text()='bar']和td [3] [text()='baz']]

+1

可能有更快的方法,但是a)我被限制在IE上使用硒,以及b)我的元素都沒有區分id,name或class屬性。這是一個挑戰: - \ –