我编写了一些代码来使用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']");
但是有错误。你能给我一些提示吗?谢谢。甲
答案 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.