我希望这是一个愚蠢的问题,答案很简单。
(我用谷歌搜索了一天半没有喜悦)
我正在编写一个更改下拉菜单的casperjs脚本 我已经愚弄了测试代码以解决问题的症结 我的测试HTML如下:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
</head>
<body style="background-color:powderblue;">
<form>
<select id="down">
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="vw">VW</option>
<option value="audi">Audi</option>
</select>
</form>
</body>
</html>
使用jquery工作的Casperjs脚本:
casper.start("http://192.168.0.14/test.html", function(){
//change the pulldown selection
casper.then(function () {
this.evaluate(function(){
$('#down').val('vw').change();
});
});
casper.then(function(){
this.capture("screen.png");
});
});
casper.run();
现在我想参数化代码,并为选择器和值使用变量而不是字符串。但是这段代码不起作用:
var x1='#down';
var y1='vw';
casper.start("http://192.168.0.14/test.html", function(){
//change the pulldown selection
casper.then(function () {
this.evaluate(function(){
$(x1).val(y1).change();
});
});
casper.then(function(){
this.capture("screen.png");
});
});
casper.run();
这应该不困难(可能不是)但是“窗口”的所有组合。或方括号表示我失败了。
jquery拒绝玩得很好。
请帮助,我不认为这会让我超出我的深度,但它显然已经
答案 0 :(得分:0)
试试这个: -
this.evaluate(function(x1, y1){
$(x1).val(y1).change();
}, x1, y1);
评估中的任何内容都是沙箱,你需要传入你想在里面使用的任何参数