2009-12-15 62 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')]