我使用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答案 0 :(得分:0)
您可以尝试这样的事情:
//div[string-length(normalize-space(substring-before(substring-after(h2/@onclick,','),')')))=4]