如何从Xpath返回的序列中选择第一个元素

时间:2013-04-18 11:51:51

标签: xpath firebug selenium-webdriver

我试图找到一个特定的网络元素:属于该类的输入字段" selectDateTime"并且位于标签" From"旁边。实际上是XPath查询

//fieldset[legend="Pickup"]//div[@class="selectDateTime"]

创建了这个元素,但同一个类的另一个元素出现在页面上。我尝试使用以下XPath查询

选择第一个或最后一个元素

//字段集[图例="拾取"] // DIV [@class =" selectDateTime"] [1]   (//字段集[图例="拾取"] // DIV [@class =" selectDateTime&#34])[1]

但是在第一种情况下,查询找到了2个元素,在第二种情况下,查询没有产生结果。你知道吗,我怎么解决这个问题?可能是,你有一个解决方法吗?您对自己的想法表示欢迎。

以下是解析的XML:

[fieldset]
    [legend]
        Pickup
    [/legend]
    [div class="block block_position_first"]
        [div class="tr"]
            [div class="td"]
                [label]
                    From:
                [/label]
            [/div]
            [div class="td"]
                [div class="selectDateTime"]
                    [input class="date" type="text" placeholder="dd/mm/yyyy"/]
                    [input class="time" type="text" placeholder="00:00"/]
                [/div]
            [/div]
        [/div]
        [div class="tr"]
            [div class="td"]
                [label]
                    To:
                [/label]
            [/div]
            [div class="td"]
                [div class="selectDateTime"]
                    [input class="date" type="text" placeholder="dd/mm/yyyy"/]
                    [input class="time" type="text" placeholder="00:00"/]
                [/div]
            [/div]
        [/div]
    [/div]
[/fieldset]

发布XML文件存在一些问题,因此我将替换<和>分别用[和]

1 个答案:

答案 0 :(得分:0)

对第一个元素使用[1],为最后一个元素使用[last()]。确保添加适当的括号,否则您将收到最后一步表达式的每次运行的第一个或最后一个元素。

(//fieldset[legend="Pickup"]//div[@class="selectDateTime"])[1]
(//fieldset[legend="Pickup"]//div[@class="selectDateTime"])[last()]