【问题标题】:Reading title tag in svg?阅读svg中的标题标签?
【发布时间】:2020-08-23 08:13:49
【问题描述】:

如何阅读下面的文字? svg 似乎是个特例。

尝试了以下方法,但没有任何帮助

//*[name()='svg']/title

//*[name()='svg' and @title='Test']

//*[name()='svg' and contains(@title,'Test')]

    <svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100%" viewBox="0 0 137 125" version="1.1">
        <title>Test</title>
        <desc>Created with Sketch.</desc>

【问题讨论】:

    标签: selenium selenium-webdriver svg xpath css-selectors


    【解决方案1】:

    要从WebElement 内的&lt;title&gt; 标记中提取文本,您可以使用以下任一Locator Strategies

    • 使用css_selector

      svg>title
      
    • 使用xpathname()

      //*[name()='svg']/*[name()='title']
      
    • 使用xpathlocal-name()

      //*[local-name()='svg']/*[local-name()='title']
      

    参考

    您可以在以下位置找到一些相关讨论:

    【讨论】:

    • 是的,我尝试了您推荐为 //*[name()='svg']/title 的 xpath 方法,但它不起作用。 :-(
    • @user12635792 我相信name() 不是我回答的一部分,但local-name() 而且您还没有告诉我们您看到的错误。此外,您是否检查了我提供的参考资料?
    • @user12635792 作为Locator Strategies 中的推荐层次结构尝试使用css_selector
    • 是的@DebanjanB@user12635792,显然,只有 //*[name()='svg'] 或 //*[local-name()='svg'] 有效,而不是 //* [local-name()='svg']/title 或 //*[name()='svg']/title
    • 如果 Selenium 具有将 XML 命名空间前缀绑定到命名空间的机制,则最好使用该机制,而不是通过 local-name() 谓词破坏命名空间。还要注意title 位于http://www.w3.org/2000/svg 命名空间中,因此需要与svg 类似的处理方式。 (默认命名空间声明适用于它们出现的元素以及未指定命名空间的所有后代元素。)
    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-04
    • 2011-02-02
    相关资源
    最近更新 更多