2014-04-10 86 views
0

我似乎無法選擇下拉列表中的某個元素,並讓頁面識別此更改。隨着選項值的生成,我不能直接點擊它們,但必須通過某種索引/號碼進行選擇。獲取下拉列表的最後一個選項

所以,當我使用此代碼來選擇第二個選項:

casper.evaluate(function() 
{ 
    document.querySelector('select[id="sub-product-select"]').selectedIndex = 2; 
    return true; 
}); 

第二個選項設置 - 但頁面不能識別變化並沒有改變一些依賴值如價格或激活「購買「相同形式的按鈕。

下拉選擇看起來是這樣的:

<form id="form-product-add-to-cart" action="/cart/add"> 
    <select id="sub-product-select"> 
     <option value=""></option> 
     <option value="02T01S1-01"></option> 
     <option value="02T01S1-02"></option> 
     <option value="02T01S1-03"></option> 


所以問題是: 如何不僅選擇第二項,但使頁面承認它喜歡它被點擊或有選擇後的「回報」?

+0

您可以在選擇後觸發'change'事件。 –

+0

愚蠢的問題,但我對casper + JS相當新穎:在這種情況下我該怎麼做? – yaer

+0

看到這個問題http://stackoverflow.com/questions/22508688/use-a-select-outside-of-a-form-with-casperjs,應該可以幫到你。 – Fanch

回答

0

那麼,對於我這個代碼的工作:

this.mouse.down("select#sub-product-select");//press left button 
this.mouse.up('select#sub-product-select > option:nth-of-type(2)');//release left button 

是您的選擇獨特之處?你如何檢查更改?嘗試slimerJS在現場看到他們(新聞/發佈點擊)。

+0

是的,我在另一個問題的某處看到了這個解決方案。我也嘗試過(並嘗試通過屏幕截圖進行驗證;選擇器是唯一的),但它根本不起作用;請參閱有關問題評論的第4條評論。 最後我使用了'.change()'行,就像上面的註釋一樣。與querySelecter相結合,它做到了這一點。 – yaer

+0

是的,好主意,沒有想到:p – Fanch

相關問題