【发布时间】:2014-04-29 10:09:54
【问题描述】:
我有一个这样的 html 标记:
<html>
...
<body>
....
<fieldset>
<legend>Other Details</legend>
<div>
<input type='text' id='txt1' title='Detail 01'/>
</div>
<div>
<input type='text' id='txt2' title=''/>
</div>
<div>
<input type='text' id='txt3' title=''/>
</div>
<div>
<input type='text' id='txt4' title='Detail 04'/>
</div>
</fieldset>
.....
<body>
</html>
这就是我想做的。
我需要快速遍历屏幕,找到所有文本框及其标题。当我遇到一个没有标题的文本框时(就像我上面的例子中的两个),我需要检查它们是否出现在一个字段集下,他们确实这样做了。现在,对于这些没有标题的文本框,我所要做的就是获取字段集的图例值并将其分配给文本框。
例如,上例中的第二个和第三个文本框没有标题。在这种情况下,我想做以下事情:
- 获取包含字段集的图例值(在本例中为“其他详细信息”)
- 导出文本框在字段集中的位置并将其附加到字段集图例中,如其他详细信息 2
- 对第三个文本框执行相同的操作。
我实现了第 1 步。当我在第 2 步时,我需要找出文本框在父字段集中的位置。我的 selenium webdriver 代码如下:
WebElement textbox = driver.findElement(By.id("txt2"));
List<WebElement> precedingSiblings =
textbox.findElement(By.xpath("preceding-sibling::input[@type='text' or @type='Text' or @type='TEXT']"));
String myTitle =
fieldSetLegend + " " + Integer.toString(precedingSiblings.size()+1);
我希望这段代码可以让我的第二个和第三个文本框的 myTitle 值为 Other Details 2 和 Other Details 3。
但问题是,每次我点击 previousSiblings.size(),它总是返回 0。这是因为每个输入都包含在一个 div 中,因此没有兄弟姐妹。
现在,我想知道一种方法,通过它我可以找到当前元素在包含字段集中的哪个位置。
请帮忙!!!!
【问题讨论】:
标签: selenium xpath webdriver siblings