查找特定的xpath以文本长度Python Selenium为条件

时间:2017-07-12 13:41:02

标签: python string selenium xpath

为了在很多很多页面中获得我想要的正确内容 - 我已经提出了一个99%的时间可以运行的规则:

//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2'))]

另外1%导致找到超过1个匹配节点,并需要更多特殊处理" not (contains(text(), 'specialtext'))

我想到的是,我想要的值只有1个字符,最多4个,而特殊处理案例总是超过4个数字。

我想要做的是在我的xpath中添加另一个看起来像这样的条件:

//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2')) and (text_length() < 5)]

这应该作为一个100%的规则,总是让我得到我需要的特定节点。 我在Java中看到过类似的东西:

System.out.println("Select elements which 
  have string length less than 4");
  expr = xpath.compile(".//*[string-length(name()) < '4']")

(From this website)

但无法找到与Python匹配的功能。

有没有?

1 个答案:

答案 0 :(得分:1)

string-length()不是Java函数,而是XPath函数!您可以在表达式中使用相同的方式:

//a[@class='popular class' and not (contains(text(),'text1')) and not (contains(text(),'text2')) and string-length(.) < 5]