gpt4 book ai didi

javascript - CasperJS 从不提交我的表单

转载 作者:行者123 更新时间:2023-11-28 21:11:23 25 4
gpt4 key购买 nike

我有一个简单的表单,我想填写并提交它以测试它是否按预期工作。

这是本应有效但实际上无效的代码。我已经尝试过多种方式提交表单,但都没有触发页面重新加载。

casper.test.begin('Showcase signup works', 2, function suite(test){
casper.start('https://my.vidzor.com/accounts/signup/', function(){
test.assertExists('form', 'Signup form found');
this.fillSelectors('form', {
'input[name="name"]': 'Test User',
'input[name="email"]': 'test@example.com',
'input[name="password"]': 'example',
'input[name="password_confirm"]': 'example'
}, true);
this.click('button[type="submit"]');
this.evaluate(function submitForm(){
$('form').submit();
});
this.wait(10000);
this.captureSelector('signup-form.png','input#id_name');
var form_values = this.getFormValues('form');
console.log(JSON.stringify(form_values));
test.assertEqual(form_values.stage, "2");
});
casper.run(function() {
test.done();
});
});

我注意到有许多奇怪的事情正在发生。

  1. form_values 不包含姓名和电子邮件字段,即使它们已填满
  2. captureSelector 对整个页面进行截图;实际上,当我仅针对“表单”调用它时,它会捕获页面的不同部分
  3. 似乎该页面从未提交(10 秒的等待时间肯定比加载下一个页面所需的时间更长,并且屏幕截图中没有显示任何错误)

我在这里错过了什么?

最佳答案

您必须牢记 CasperJS 的异步特性。 wait*then*函数都是异步步函数,用于调度一些行为。如果在调用 wait 之后调用 captureSelector 等同步函数,则中间没有等待。它们必须在 waitthen 回调中安排:

this.wait(10000, function then(){
this.captureSelector('signup-form.png','input#id_name');
var form_values = this.getFormValues('form');
console.log(JSON.stringify(form_values));
test.assertEqual(form_values.stage, "2");
});

如果表单提交处理程序不是异步的,那么下面的代码应该可以在没有显式等待的情况下工作:

casper.start('https://my.vidzor.com/accounts/signup/', function(){
this.fillSelectors('form', {
'input[name="name"]': 'Test User',
'input[name="email"]': 'test@example.com',
'input[name="password"]': 'example',
'input[name="password_confirm"]': 'example'
}, true);
});
casper.then(function(){
this.captureSelector('signup-form.png','input#id_name');
var form_values = this.getFormValues('form');
console.log(JSON.stringify(form_values));
test.assertEqual(form_values.stage, "2");
});

关于javascript - CasperJS 从不提交我的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26338672/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com