Java XPath 问题

标签 java xpath

我编写了一些代码来使用xpath和Java解析html。 html 文件类似于:

    <div class="field_row">
    <label for="names">Names *</label>
    <input id="address.A" type="text" maxlength="15" size="32" value="12345" name="address.work">
    <span class="additional_info"> Information 1 </span>
    </div>
    <div class="field_row">
    <label for="names">Names *</label>
    <input id="address.B" type="text" maxlength="15" size="32" value="12345" name="address.work">
    <span class="additional_info"> Information 2 </span>
    </div>

和Java代码:

    public static final Element INFOFIELD= Element.findXPath(".//*[@class='additional_info'");

会让我得到“信息1”;但是,我需要检索“信息 2”。因此,我使用:

    public static final Element INFOFIELD= Element.findXPath(".//*[@class='additional_info' and @id='address.B']");

但出现错误。你能给我一些提示吗?谢谢。答:

最佳答案

您可以根据输入字段 (address.B) 创建 XPath,然后指定您想要访问其同级节点之一,从而检索其数据...

X 路径:

//input[@id='address.B']/following-sibling::span[@class='additional_info']

正如您所见,在找到具有 id 属性“address.b”的输入节点后,我们指定“following-sibling”。这表明我们想要选择当前节点('address.B's 输入字段)之后的同级节点之一。然后我们指定属性详细信息后跟哪个节点:span[@class='additional_info']

一些实现上述 XPath 的工作代码:

WebElement element = driver.findElement(By.xpath("//input[@id='address.B']/following-sibling::span[@class='additional_info']"));
System.out.println(element.getText());

将打印“信息2”

您可以以其他相关方式使用 XPath 轴来访问 DOM 中的其他节点(父节点、子节点、兄弟节点等)。

http://www.w3schools.com/xpath/xpath_axes.asp

An axis defines a node-set relative to the current node.

关于Java XPath 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19362104/

相关文章:

java - Hibernate 中用于自动递增 MySQL 主键的 Java 注释是什么 - @Id

java - 在spring mvc框架中使用Spring加载

java - Android java从url解析json到对象列表

java - Gradle同步失败: Could not determine Java version provide fix?

javascript - 为页面上具有动态位置的元素查找 XPath(直接跳转到元素?)

python - 如果无法定位元素,Selenium 继续执行脚本

java - Struts2 doubleselect - doubleOnchange 不起作用

python - 为什么scrapy没有给出所有结果并且规则部分也不起作用?

xml - 使用 xpath 选择顶部节点

java - 使用 xpath 根据标题选择元素时出现问题