【问题标题】:Finding XPath for text in div following input在输入后查找 div 中文本的 XPath
【发布时间】:2013-05-28 16:42:03
【问题描述】:

我在阅读 XPath 时遇到问题。需要专家的帮助/建议。

我的部分 HTML 如下:

<div class = "input required_field">
    <div class="rounded_corner_error">
        <input id="FnameInput" class="ideField" type="text" value="" name="first_name>
           <div class ="help-tooltip">LOGIN BACK TO MAIN</div>
           <div class="error-tooltip">

我需要找到短信的 XPath (LOGIN BACK TO MAIN)

使用 Firebug 我找到了 XPath

("//html/body/div/div[5]/div/div/form/fieldset/div/div[2]/div[2]/div/div");

但是使用上面的 XPath 我只能读取 class= help-tooltip 但我需要读取 LOGIN BACK TO MAIN

【问题讨论】:

  • 您发布的 HTML 无效(input 元素的name 属性未关闭)。您还缩进了最后两个divs,就好像它们是input 的孩子一样,但这将是无效的HTML,并且可能不代表您的结构。如果您将 HTML(不是有效的 XML)提供给仅支持 XML 的系统,您可能会遇到问题。

标签: html xpath


【解决方案1】:

尝试在您拥有的 xpath 末尾添加/text()

【讨论】:

    【解决方案2】:

    看起来您的 XPath 与您的 XHTML 元素并不真正匹配。

    您应该尝试一些更简单、更通用的方法,例如:

    //div[@class="help-tooltip"]/text()
    

    Selecting a css class with xpath

    【讨论】:

    • 感谢马丁的帮助
    【解决方案3】:

    我会使用:

    # Selecting the div element
    //input[@id="FnameInput"]/following-sibling::div[@class="help-tooltip"]
    
    # Selecting the text content of the div
    //input[@id="FnameInput"]/following-sibling::div[@class="help-tooltip"]/text()
    

    ...因为语法上有效的 HTML 文档将具有唯一的 id 属性,因此这是一个非常强大的锚点。

    注意后一个表达式将选择文本节点,而不是该节点的文本字符串内容;如果需要字符串,则需要提取文本节点的值。具体操作方式取决于您使用的工具:

    • 在 JavaScript/DOM 中,这将是文本节点的 .nodeValue 属性。
    • 对于Nokogiri,这将是.content 方法。
    • ...但我不知道您使用的 XPath 是什么技术。

    【讨论】:

      猜你喜欢
      • 2014-07-09
      • 1970-01-01
      • 2014-10-01
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      • 2014-06-01
      • 1970-01-01
      • 2014-03-31
      相关资源
      最近更新 更多