选择一个节点,其中属性包含特定字符后具有一定长度的文本

时间:2014-10-29 10:31:28

标签: regex xpath selenium-ide

我使用Selenium IDE并且无法弄清楚如何选择具有某个属性的给定元素,该属性包含指定字符后某个长度的某个文本(数字)。

为了更好地了解我想要实现的目标,请参阅下面的示例。

我有以下HTML元素:

<div><h2 class="attribute" onclick="PropertyPopup.Show(63854, 4065)">test test</h2></div>

在我的情况下,括号中的数字(63854和4065)都在动态变化,我对第二个数字(4065)感兴趣。这个长度可以是4或7,所以我需要一个XPATH(与regexp结合使用?),它只能提取这个数字的长度为4的元素(例如上例)。

到目前为止,我使用了以下XPATH:

//div[h2[@onclick][string-length(@onclick)<=31]]

此刻工作正常(因为在大多数情况下,当第二个数字的长度为4时,整行将少于(或等于)31个字符)但如果第一个数字将包含6个数字(和整行将有32个字符),上面的例子将不会被选中。如果我要放&#34;&lt; = 32&#34;,那么在某些情况下,它会选择那些第二个数字的长度为7的元素(就像第一个数字的长度为3,第二个数字的长度为7) )。 我试图使用类似下面的内容:

//div[h2[@onclick][contains(@onclick,', \d{4}']]

但是这不会被认为是正则表达式,而是会寻找一个&#39; onclick&#39;包含单词&#34;,\ d {4}&#34;。

的属性

为了仅根据第二个数字(长度)选择节点,我能做些什么吗?

谢谢你, Szabi

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

//div[string-length(normalize-space(substring-before(substring-after(h2/@onclick,','),')')))=4]