1

我编写了一些代码来使用 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']");

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

4

1 回答 1

0

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

XPath:

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

如您所见,在我们找到具有 id 属性“address.b”的输入节点后,我们指定了“following-sibling”。这表明我们要在当前节点('address.B's input field)之后选择一个兄弟姐妹。然后我们指定属性详细信息后跟哪个节点: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.
于 2013-10-17T11:32:51.213 回答