casperjs button click doesn't navigate to next page
我有一个页面,其中包含带有 javascript 设置的 HTML 表单,例如,如果您单击带有 someid 的按钮,表单就会被提交。我通过在浏览器控制台中触发来验证了这一点:
document.getElementById("arcotsubmit").click()
一旦它被触发,url就会改变并且表单被提交。
现在我尝试用 casper.js 复制它:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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(); |
它停留在同一个 URL 并下载同一个页面。我想下载casper单击按钮后出现的html。该 URL 是实时的,可以直接测试。
我的意思是我是否可以在浏览器控制台中使用此命令
1 | document.getElementById("arcotsubmit").click() |
并使其重定向,为什么我无法做到这一点
this.click("#arcotsubmit") in casperjs?
它是提交而不是点击重定向。 input[type=image] 的默认事件是提交,所以试试这个:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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(); }); }); |
会通过的。
测试结果截图
可能的快速修复。如果 Casper 的点击不起作用,但您的代码在浏览器的控制台中运行,请尝试使用 Casper 的评估功能。
1 2 3 4 5 | casper.then(function() { this.evaluate(function() { document.getElementById("arcotsubmit").click(); }); }); |