WebDriver - 寻找兄弟元素

时间:2014-04-29 10:09:55

标签: selenium xpath webdriver siblings

我有一个像这样的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>

这就是我想要做的。

我需要快速遍历屏幕,拿起所有文本框及其标题。当我遇到一个没有标题的文本框(就像上面的例子中的两个一样)时,我需要检查它们是否出现在字段集下,他们这样做。现在,对于没有标题的这些文本框,我所要做的就是获取字段集的图例值并将其分配给文本框。

例如,上例中的第二个和第三个文本框没有标题。在这种情况下,我想做以下事情:

  1. 获取包含字段集的图例值(在本例中为“其他详细信息”)
  2. 在字段集中导出文本框的位置,并将其附加到fielset图例,如其他详细信息2
  3. 对第三个文本框执行相同的操作。
  4. 我实现了第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的值作为我的第二和第三个文本框的其他详细信息2和其他详细信息3。

    但问题是,每当我点到在previousSiblings.size()时,它总是返回0.这是因为每个输入都包含在div中,因此没有兄弟。

    现在,我想了解一种方法,通过该方法,我可以找到当前元素在包含字段集中的位置。

    请帮忙。!!!

1 个答案:

答案 0 :(得分:0)

如何导航到父母div找到它的之前的兄弟姐妹&amp;然后从那里找到相关的input

大致是:

parent::div/preceding-sibling::div/input[@type='text' or @type='Text' or @type='TEXT']