我有一个表单,我试图用CasperJS填充。代码本身似乎没有任何问题(没有返回错误) - 但我似乎无法“检查”表单是否已填写。
当我转储'first_name'时,它似乎是空白的 - 即使我已将其设置为填充字符串'Joe' - 任何想法我做错了什么?
casper.start(url);
casper.then(function() {
this.fill('form[name="phones_display"]', {
'first_name' : 'Joe', // Required
'last_name' : 'bloggs', // Required
'check_payable' : '', // name to cheque if different from your name
'payment_method' : 'check', // Required check, paypal
'shipping_method' : '', // envelope, fedex
'email_address' : 'joe@bloggs.com', // Required
'paypal_email_address' : '',
'telephone_number' : '12345678', // Required
'street_address_1' : '', // Required
'street_address_2' : '',
'city' : '', // Required
'state' : '',
'zip_code' : '', // Required
'hear' : '',
'otherreason' : ''
}, true);
});
casper.then(function() {
var first_name = this.evaluate(function() {
return $('input[name="first_name"]').val();
});
require('utils').dump(first_name);
});
casper.run();
答案 0 :(得分:3)
这是因为填写完表格后会提交。因此,当您尝试获取输入“名字”时,表单已被清除。为了避免这种情况,只需将casper.fill()方法的第三个参数更改为false。
fill(String selector, Object values[, Boolean submit])
示例:
this.fill('form[name="phones_display"]', {
'first_name' : 'Joe', // Required
'last_name' : 'bloggs', // Required
....
}, false);
答案 1 :(得分:0)
想出来......页面搞砸了表单标签,所以我的代码永远不会起作用: - (