我在casperjs中编写一个刮刀,我正在尝试从下拉列表中选择一个值。到目前为止,我发现这样做的最好方法是使用JQuery。但是,如果我将选择器的ID作为变量传递,则选择器不会更新,如果我将其作为字符串传递,则选择器将完美更新。
使用:
var specialtySelector = '#specialitydiv';
casper.evaluate(function () {
$('#specialitydiv').find('select').val('238').change();
});
失败:
var specialtySelector = '#specialitydiv';
casper.evaluate(function () {
$(specialtySelector).find('select').val('238').change();
});
任何人都可以解释为什么当字符串成功传递时传递expertSelector会失败吗?
答案 0 :(得分:0)
这里的问题是CasperJS'evaluate()
独立于脚本的其余部分运行。要解决此问题,您需要传递要在evaluate()
。
var specialtySelector = '#specialitydiv';
casper.evaluate(function(sel) {
$(sel).find('select').val('238').change();
}, specialtySelector);
第一个示例的工作原因是因为您实际上并未使用evaluate()
调用无法使用的任何变量。