2015-04-14 107 views
1

测试场景是,选项中,无法选择

  1. 创造一个细胞,
  2. 变化,从下拉菜单中(从r到Python)的语言,
  3. 输入验证码和执行它。对于下拉菜单中的HTML代码是
<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

什么错误,你看到了什么?更改选定的索引后,是否显示在截取屏幕时选择了“Python”?选择框可能是隐藏的,实际的下拉菜单是用HTML + CSS + JS实现的吗? –

+0

雅它在下拉菜单中显示“Python”。我使用的只是简单的Python代码,这是一个= 50;打印一个。当它被执行时(Python在下拉菜单中被选中),它显示'分析错误::1:12:意外符号1:a = 50;打印'错误。当我们在R. – GANA

回答

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" ] 
}); 
+0

上面解决方案中运行python代码时发生这个错误......谢谢,但是在那之后,当我执行代码时,应用程序变得没有响应......并且没有执行它就退出脚本。 – GANA

+0

谢谢上面的解决方案只有当我键入一些代码,并且我改变了下拉菜单,但是当我在输入代码之前更改下拉值时,它开始执行空单元格。它不会去代码的下一行,这是将代码添加到单元格 – GANA

+0

* *“解决方案中的*”代码“*只有当我键入一些代码时才起作用”*是什么意思?你在谈论需要在页面上输入的内容吗?如果是,那么我无法帮助你,因为我不知道你正在谈论的页面。 –