2009-12-15 56 views
10

我正在尋找編寫XPath查詢以從我構建的部分ID返回完整元素ID。有誰知道我該怎麼做?從下面的HTML(我削減了這一點刪除工作特定的內容)我正在尋找提取f41_txtResponse從把f41_txt到我的查詢。XPath從部分ID查找完整的HTML元素ID

<input id="f41_txtResponse" class="GTTextField BGLQSTextField2 txtResponse" value="asdasdadfgasdfg" name="f41_txtResponse" title="" tabindex="21"/> 

乾杯

+0

你是什麼意思的「全元素ID」?你能舉一個例子嗎? – 2009-12-15 13:27:05

回答

8

感謝Thomas榮格我已經能夠想出解決辦法。如果我使用:

//*[contains(./@id, 'f41_txt')]/@id 

這將返回只是我正在尋找的ID。

+6

請注意,這可能會失敗。您可能希望使用'/ * * [starts-with(@id,'f41_txt')]/@ id'來代替。 – Tomalak 2009-12-16 09:33:28

22

您可以使用包含選擇元素:

//*[contains(@id, 'f41_txt')] 
+0

隨着我們生成網頁的方式,這是檢索我只是在尋找元素ID的一切。 – user228178 2009-12-15 14:03:08

+0

// * [contains(@id,'f41_txt')]將選擇您必須遍歷的標籤列表,併爲每個標籤選擇id屬性。你可以使用count(// * [contains(@id,'f41_txt')])來獲得總數。 – 2009-12-15 14:16:37

+0

這不是最好的方式來做到這一點。儘管在你的幫助下,我已經回答了我自己的問題。 – user228178 2009-12-15 14:19:35

0

我建議不要使用來自Id的數字,當你使用部分id編寫xpath的時候。這些數字代表DINAMIC元素。並且動態元素會在接下來的部署/釋放中在被測試的系統中發生變化。傾向於唯一標識元素。 使用,這可能是這樣的一個更好的選擇什麼,喲計上心來: //輸入[包含(@id,「_txtResponse」)]/@ ID

-1

它的工作對我來說就像下面

//*[contains(./@id, 'f41_txt')]