测试场景是,
<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语言,但是当我们运行代码时,它在提示单元格中显示错误。我们在python语言单元格中运行R代码时得到的错误。
答案 0 :(得分:1)
问题可能是选择框上有一个不会被调用的更改侦听器,因为设置selectedIndex
属性不会触发更改。
触发此更改的可靠方法是使用jQuery's 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" ]
});