2016-06-13 103 views
0

如果我使用以下XPath:XPATH選擇找到幾個要素,而不是一個(兄弟與以下,兄弟姐妹)

//*[contains(@class, 'some-label') and contains(., 'MT:Week')] 

這讓我完全按預期一個元素(<span>)。到現在爲止還挺好。

我要的是得到<select>就在旁邊,但這樣做:

//*[contains(@class, 'some-label') and contains(., 'MT:Week')]/following::select 

它已經選擇 <select>元素。如何在不使用名稱屬性(!)的情況下僅選擇一個

的HTML:

<div> 
    <label> 
    <span class="some-label">MT:Month</span> 
    <select name="month" id="someID"> 
     <option selected="selected" value="12">March 2015</option> 
    </select> 
    </label> 
</div> 

<div> 
    <label> 
    <span class="some-label">MT:Week</span> 
<!-- want to select just the below one --> 
    <select class="width-50px" name="monthWeek" id="someOtherID"> 
     <option selected="selected" value="">All</option> 
     <option value="CalendarWeek{year=2015, week=9}">9</option> 
     <option value="CalendarWeek{year=2015, week=10}">10</option> 

    </select> 
    </label> 
</div> 


<div> 
    <label> 
    <span class="some-label">MT:Type</span> 
    <select name="type" id="anotherID"> 
     <option selected="selected" value="">All</option> 
     <option value="someValue">Value 1</option> 
     <option value="someValue2">Value 2</option> 

    </select> 
    </label> 
</div> 

回答

1

你可以使用[1],以獲得第一:

//*[contains(@class, 'some-label') and contains(., 'MT:Week')]/following::select[1] 

但你可能只想同一個標籤內的一個,所以用以下同胞

//*[contains(@class, 'some-label') and contains(., 'MT:Week')]/following-sibling::select 
+0

令人驚訝的是,我們寫了相同的兩個表達式, 5秒:) – splash58

+0

@BeniBela。謝謝,它是手勢。現在學會了兄弟姐妹和兄弟姐妹之間的區別。帶有示例的良好源代碼在這裏 - http://www.zvon.org/xxl/XPathTutorial/Output/example15.html和http://www.zvon.org/xxl/XPathTutorial/Output/example17.html – Andrejs

+0

@ splash58這似乎幾乎每次都發生 – BeniBela