我有一个页面,其中包含带有javascript设置的HTML表单,如果您单击带有someid的按钮,表单将被提交。我在浏览器控制台中解决了这个问题:
的document.getElementById( “arcotsubmit”)。单击()
一旦被触发,网址就会更改,表单也会被提交。
现在我尝试用casper.js复制它:
var casper = require('casper').create({});
casper.start('https://cib.icicibank.com/corp/BANKAWAY?Action.CorpUser.Init1.001=Y&AppSignonBankId=ICI&AppType=corporate', function() {
this.echo(this.getTitle());
});
casper.then(function(){
this.click("#arcotsubmit");
});
casper.then(function(){
console.log(this.getCurrentUrl())
});
casper.run();
它保留在同一个网址上并下载同一页面。我想下载casper点击按钮后出现的html。该URL是实时的,可以直接测试。
我的观点是,如果我可以在浏览器控制台中使用此命令
document.getElementById("arcotsubmit").click()
并使其重定向,为什么我无法做到 在casperjs中的this.click(“#arcotsubmit”)?
答案 0 :(得分:1)
提交而非点击进行重定向。 输入[type = image] 的默认事件为提交,因此请尝试以下操作:
casper.test.begin('Test page.', 2, function suite(test) {
casper.start(
'https://cib.icicibank.com/corp/BANKAWAY?Action.CorpUser.Init1.001=Y&AppSignonBankId=ICI&AppType=corporate',
function() {
this.echo(this.getTitle());
test.assertUrlMatch(/BANKAWAY?/, 'Current location is ' + this.getCurrentUrl());
}
);
casper.then(function(){
this.fill('#rt', {}, true);
this.wait(2000, function() {
test.assertUrlMatch(/BANKAWAY;/, 'New location is ' + this.getCurrentUrl());
});
});
casper.run(function() {
test.done();
});
});
它将被通过。 Test Result Screen Shot
答案 1 :(得分:0)
可能的快速修复。如果Casper的点击不起作用,但您的代码在浏览器的控制台中工作,请尝试使用Casper的evaluate函数。
casper.then(function() {
this.evaluate(function() {
document.getElementById("arcotsubmit").click();
});
});