2013-11-24 36 views
0

我正在寫casperjs中的刮板,我試圖從下拉列表中選擇一個值。到目前爲止,我發現最好的方法是使用JQuery。但是,如果我將選擇器的ID作爲變量傳遞,那麼選擇器不會更新,如果將它作爲字符串傳遞,選擇器將完全更新。如何通過casperjs將選擇器ID作爲變量傳遞給JQuery?

作品:

var specialtySelector = '#specialitydiv'; 
casper.evaluate(function() { 
    $('#specialitydiv').find('select').val('238').change(); 
}); 

失敗:

var specialtySelector = '#specialitydiv'; 
casper.evaluate(function() { 
    $(specialtySelector).find('select').val('238').change(); 
}); 

任何人都可以解釋爲什麼路過路過選擇時,作爲一個字符串成功specialtySelector會失敗?

回答

0

這裏的問題是CasperJS'evaluate()獨立於腳本的其餘部分運行。要解決這個問題,你需要傳遞你想在evaluate()裏面使用的任何變量。

var specialtySelector = '#specialitydiv'; 
casper.evaluate(function(sel) { 
    $(sel).find('select').val('238').change(); 
}, specialtySelector); 

爲什麼第一個示例工作的原因是因爲你沒有實際使用所不具備的evaluate()調用任何變量。