测试场景是
<select class="form-control cell-control-select cell-control">
<option>Markdown</option>
<option>R</option>
<option>Python</option>
<option>RMarkdown</option>
</select>
以下是我的casperjs代码
casper.then(function(){
this.mouse.click({ type: 'xpath' , path: "/html/body/div[3]/div/div[2]/div/div[3]/div[1]/div/select"});//x path for dropdown menu
this.echo('clicking on dropdown menu');
this.wait(3000);
});
casper.then(function(){
var z = this.evaluate(function() {
document.querySelector('.form-control').selectedIndex = 2;
return true;
});
this.wait(3000);
});
它是从下拉菜单中选择Python语言,但是当我们运行代码时,它在提示单元格中显示Error。当我们在python语言单元中运行R代码时,会遇到相同的错误。
问题可能是在选择框上有一个未调用的更改侦听器,因为设置selectedIndex
属性不会触发更改。
触发此更改的可靠方法是使用jQuery的change()
:
this.evaluate(function() {
var form = document.querySelector('.form-control');
form.selectedIndex = 2;
$(form).change();
});
如果您的页面中还没有jQuery,则可以在本地插入jQuery,如下所示:
var casper = require('casper').create({
clientScripts: [ "jquery.min.js" ]
});
或者如果您在本地没有它:
var casper = require('casper').create({
remoteScripts: [ "http://code.jquery.com/jquery-2.1.3.min.js" ]
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句