2013-06-28 50 views
2
<tr id="" class=""> 
    <td class="level 1" style=""> 
    <td class="Level 1: Sub level 1" style=""> 
     <a title="Tricky"> 
      <img src="edit.png"> 
     </a> 
     <a title="Tricky-2"> 
      <img src="reports.png"> 
     </a> 
     <span class="eoc_indicator"></span> 
    </td> 

    <td class="level 1: Sub level 2" style=""> 
     <a target="" href="">Hello world</a> 
    </td> 
</tr> 

我需要選擇元件「IMG SRC =‘edit.png’」元件,其是在TD類:「1級:分等級1」,這是在一個td標記類=「1級」,包含有文本的「Hello World」什麼的XPath,在<tr>選擇元件,其具有特定的「X」在其​​標籤中的一個

我想到的XPath的是這樣的事情

tr[**/td/a[contains(@text,'Hello World')]]/td/a/img[contains(@src,'edit.png')] 
一個 td元素

但我無法找到,我做錯了什麼?

+1

相關(幷包含一個很好的答案):http://stackoverflow.com/questions/4608097/xpath-to-select-a-table-row-that-has-a-cell-containing-specified-text –

回答

1

這不是@text,它是text()@text尋找屬性texttext()選擇上下文節點的所有文本節點子節點。

使用下面的XPath(我相信這是簡單):

tr[contains(*/td/a/text(),'Hello World')]/td/td/a/img[contains(@src,'edit.png')] 

在一個側面說明,我不知道有關XPath的一切,但似乎**2個星號)無效。它在我的工具中給出了一個語法錯誤,我無法在任何XPath規範中找到它[1][2]

通過這種方式,讓你的原始表達式的工作,剛剛殺青的@text - >text(),去除雙星號** - >*,並添加必要的/td/末就足夠了:

tr[*/td/a[contains(text(),'Hello World')]]/td/td/a/img[contains(@src,'edit.png')] 
^   ^ ^^     ^^^ 

或者如果您想將'Hello World'在任何級別相匹配:

tr[//td/a[contains(text(),'Hello World')]]/td/td/a/img[contains(@src,'edit.png')] 
^
0

這裏是你正在尋找

tr[//td/a[contains(text(),'Hello world')]]/td/td/a/img[contains(@src,'edit.png')] 

它與online XPath tester測試XPath表達式。我之前在/<tr>之前添加了</td>,因爲您提供的示例不是格式正確的xml。

+0

我沒有看到'Hello World'的檢查,並且'//'從樹頂部開始。 'tr [.// a [contains(。,'Hello World')]/td/a/img [contains(@ src,'edit.png')]'...和contains()如果整個字符串被檢查,則不需要:'tr [.// a ='Hello World']/td/a/img [@ src ='edit.png']' –

+0

我看到您添加了' Hello World',但第一個參數應該是'.'而不是'text()'。 –

0

這應該工作,應該很容易理解:

/tr/td[td/a='Hello world']/td/a/img[@src='edit.png'] 

或者如果tr不是您的根元素,則可以使用//tr啓動xpath。


最簡單的方法來構建一個xpath就像這樣獲得直接路徑,然後通過添加謂詞來縮小範圍。

所以我開始:

/tr/td/td/a/img 

添加謂詞的 「Hello world」:

/tr/td[td/a='Hello world']/td/a/img 

,然後添加謂詞 「edit.png」:

/tr/td[td/a='Hello world']/td/a/img[@src='edit.png'] 
相關問題