经过一些调试后,看来我在CasperJS中单击或触发此按钮的点击事件时遇到困难:
<a id="generate" class="btn" href="#generate"><strong>Generate</strong></a>
这是我到目前为止的代码:
var casper = require('casper').create({ clientScripts: [ '...\\JQuery\\jquery-1.11.1.min.js' ], pageSettings: { userAgent: 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0' } }); casper.on('page.initialized', function (page) { page.evaluate(function () { (function() { window.screen = { width: 1600, height: 900 }; var fake_nav = {}; for (var i in navigator) { fake_nav[i] = navigator[i]; } fake_nav.javaEnabled = function() { return true; }; fake_nav.language = 'en-US'; window.navigator = fake_nav; })(); }); }); casper.start('http://www.json-generator.com/', function() { this.echo("Loaded successfully."); }); var template = '[\'{{repeat(1,3)}}\', {asdf: "hello"} ]'; casper.then(function() { this.evaluate(function(input) { window.$('.CodeMirror')[0].CodeMirror.setValue(input); }, template); }); casper.then(function() { this.evaluate(function() { document.$('#generate').click(); }); }); casper.then(function() { var doc = this.evaluate(function($) { return window.$('.CodeMirror')[1].CodeMirror.getValue(); }); this.echo(doc); }); casper.run(function() { this.echo('All Done.'); this.exit(); });
这会生成输出(请注意&#34; casper.echo(doc)&#34;中的空白行):
Loaded successfully. All Done.
我已经确认我的javascript在Chrome和Firefox的浏览器控制台中都有效。为什么我不能在CasperJS中单击此按钮?
答案 0 :(得分:16)
不使用evaluate函数并单击页面DOM环境中的元素(使用jQuery),只需使用casper方法:this.click('#generate.btn');
。这很容易。
还有clickLabel()功能。
答案 1 :(得分:0)
在CasperJS中单击元素可以使用三种功能:
casper.click()
:
casper.clickLabel()
:
casper.thenClick()
: