【问题标题】:Finding specific xpath conditioned to text-length Python Selenium查找以文本长度 Python Selenium 为条件的特定 xpath
【发布时间】:2017-07-12 13:41:02
【问题描述】:

为了在很多很多页面中获得我想要的正确内容 - 我想出了一个在 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 匹配的函数。

有吗?

【问题讨论】:

    标签: python string selenium xpath


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。按需要工作
    猜你喜欢
    • 2021-10-04
    • 1970-01-01
    • 2019-03-23
    • 1970-01-01
    • 2016-01-04
    • 2016-01-18
    • 2020-07-21
    • 1970-01-01
    • 2020-07-15
    相关资源
    最近更新 更多