【问题标题】:Python selenium issue when using contains text with a span element使用包含带有 span 元素的文本时的 Python selenium 问题
【发布时间】:2018-08-12 18:38:10
【问题描述】:

我正在尝试获取包含文本“集合”的 span 元素。我附上了 HTML 代码的屏幕截图。 我需要不使用类值而仅使用文本来获取此元素。 这是我没有任何运气的尝试。 请注意,单词“collections/”之前有一个空格

//*[contains(text(),' collections')]

这似乎是一件很简单的事情,但不知何故它不起作用。 有什么建议么? 非常感谢

【问题讨论】:

    标签: python selenium selenium-webdriver xpath webdriver


    【解决方案1】:

    尝试使用下面的代替:

    //*[contains(.,' collections')]
    

    //*[contains(text()[2],' collections')]
    

    Here 是一篇关于.text() 之间区别的帖子

    【讨论】:

    • 谢谢,第一个选项有效。请问我上面的解决方案为什么不起作用?我究竟做错了什么?谢谢
    • 我猜这是因为//*[contains(text(),' collections')] 正在尝试评估第一个文本节点的文本。请注意,span 节点包含 2 个子文本节点,第一个只是一个空格/换行符...
    • 你是完全正确的。我最近发现stackoverflow.com/questions/9493732/…,关键是字符串值中存在空格,这可能不会导致我的代码工作。非常感谢您的回答,非常感谢。
    【解决方案2】:

    要获取带有文本作为 collections 的元素,因为该元素是 Angular 元素,您必须诱导 WebDriverWait,您可以使用以下解决方案:

    element = driver.find_element_by_xpath("//span[normalize-space()='collections']")
    

    【讨论】:

    • 谢谢。请,一个快速的问题。如何从代码中看出它是 angular 元素?
    猜你喜欢
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多