Java XPath问题

时间:2013-10-12 19:02:25

标签: 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']");

但是有错误。你能给我一些提示吗?谢谢。甲

1 个答案:

答案 0 :(得分:0)

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

的XPath:

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

在我们找到id属性为“address.b”的输入节点后,您可以看到,我们指定了“follow-sibling”。这表明我们想要在当前节点之后选择一个兄弟节点('address.B的输入字段)。然后我们指定属性详细信息所遵循的节点: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.