【发布时间】:2013-10-20 00:35:07
【问题描述】:
我正在尝试定位页面上的特定元素,但无法确定要使用的正确 Xpath。
这是 HTML(请注意,每个 div 的位置可能会有所不同):
<div>
<label>First Name</label>
<span class="metadataField metadataFieldReadonly">
<input type="text" name="some-random-value" value="John">
</span>
</div>
<div>
<label>Last Name</label>
<span class="metadataField metadataFieldReadonly">
<input type="text" name="some-random-value" value="Smith">
</span>
</div>
所以我试图在具有 //div/label[text()=' 的同一 div 中找到 INPUT 元素,即 //div/span[@class='metadataField metadataFieldReadonly']/input姓氏']
我可以通过这个(使用 JAVA)成功定位标签:
driver.findElement(By.xpath("//div/label[text()='Last Name']")).click();
我可以成功地找到第一个元素下的第一个输入(但我可能并不总是想要第一个元素):
driver.findElement(By.xpath("//div/span[@class='metadataField metadataFieldReadonly']/input")).click();
所以问题在于 (i) INPUT 的名称标签和值总是不同的,因此它们不能用于选择元素,并且 (ii) 带有姓氏标签的 div 可能并不总是第二个,并且 (iii) 标签和跨度是同一级别(兄弟姐妹),所以我无法弄清楚如何正确创建 Xpath 语句。
因此,换句话说,我需要在同一个 div 中找到跨度的输入,其中包含带有“姓氏”的标签。
所以我需要知道如何将这两个 XPath 语句组合成一个复杂的语句(假设它们在同一个 div 中并且 label 和 span 是兄弟):
//div/label[text()='Last Name']
//div/span[@class='metadataField metadataFieldReadonly']/input
谢谢
【问题讨论】:
标签: java xpath selenium selenium-webdriver