无法验证表格已填写CasperJS& jQuery的

时间:2013-07-31 12:56:32

标签: javascript jquery phantomjs casperjs headless-browser

我有一个表单,我试图用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();

2 个答案:

答案 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)

想出来......页面搞砸了表单标签,所以我的代码永远不会起作用: - (