2014-02-25 35 views
3

我有以下情形:如何在GEB中選擇內部元素的文本?

<div> 
    <ul class="select2-results" style="width: 400px;"> 
     <li class="select2-results-dept-0 select2-result select2-result-selectable"> 
      <div class="select2-result-label"> 
       <span id="12345" class="null"> 
        GBP 
       </span> 
      </div> 
     </li> 
     <li class="select2-results-dept-0 select2-result select2-result-selectable"> 
      <div class="select2-result-label"> 
       <span id="45678" class="null"> 
        KPW 
       </span> 
      </div> 
     </li> 
     <li class="select2-results-dept-0 select2-result select2-result-selectable"> 
      <div class="select2-result-label"> 
       <span id="12345" class="null"> 
        USD 
       </span> 
      </div> 
     </li> 
    </ul> 
</div> 

我需要從中選擇貨幣。我是想以後的事,但沒辦法:

assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable', 0..2)*.text() == ["GBP", "KPW", "USD"] 

即使我不能處理這一個:

assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable')*.size() == 3 

雖然,我可以處理一個單一的元素:

assert $('UL.select2-results').find("LI.select2-results-dept-0.select2-result.select2-result-selectable", 0).text() == "GBP" 

任何幫助或建議對我來說真的很有益!謝謝!

回答

1

我不知道爲什麼@加布裏埃爾的答案沒有工作!我知道0..3有一個問題,因爲它是0..2!但是,而不是找到它終於摸索:

assert $('UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable span')*.text() == ["GBP", "KPW", "USD"] 

我很想看看有沒有人能解釋爲什麼使用索引找到+ *沒有共同爲這一特定問題工作或在那裏任何邏輯語法相關的問題。

+0

至少你找到了解決方案!請務必將其標記爲正確的答案,以便其他人不會爲您解決問題。 – inanutshellus

+0

我肯定會這麼做的。我還爲您昨天提出並刪除的問題找到了解決方案!我正準備將其粘貼爲答案,而您的問題已消失! –

+0

哈,真的嗎?是的,我只需要將Geb升級到下一個版本。滑稽。 – inanutshellus

3

只要看看你的例子,你回來的是3 DIV s。它看起來像你需要更深入一點,在星號前添加.find('span')

assert $(
    'UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable', 
    0..3)*.text() == ["GBP", "KPW", "USD"] 

成爲

assert $(
    'UL.select2-results LI.select2-results-dept-0.select2-result.select2-result-selectable', 
    0..3).find('span')*.text() == ["GBP", "KPW", "USD"] 
+0

不,男人!它也沒用! –

0

我想你也許可以這樣做,以簡化你如何讓貨幣如下:

$("div.select2-result-label").children("span")*.text() == ["GBP", "KPW", "USD"] 

因爲你已經擁有了div類,你可以很容易地使用上述選擇訪問它們,那麼你可以得到兒童span元素並獲取每個跨度的文本。我希望這有幫助!