如何在casperjs中使用填充子[英] How to use fillSelectors in casperjs

问题描述

我需要从页面上获取一些内容,但是如果使用fillSelectors(),则内容不加载.也许我需要使用evaluate(),但是我不想在哪里以及如何.

var casper = require('casper').create()
casper.start('http://console.matomycontentnetwork.com/', function() {
  this.fillSelectors('form#login-form', {
      'input[name="username"]':    'jpost',
      'input[name="password"]':    'matomy123'
  }, true);
  this.clickLabel("Sign In", 'button');
});

casper.then(function() {
  var start_date = '09/01/2015';
  var end_date = '10/07/2015';
  this.evaluate(function() {
    $('#report-range').val('custom').change();
  });

  this.fillSelectors('form#report-form', {          
    'input[name="report[start_date]"]': start_date,
    'input[name="report[end_date]"]':  end_date,
    'input[id="grouping-option-3"]' : true,
    'input[id="grouping-option-2"]' : true,
    'input[id="grouping-option-4"]' : true
  }, true);

  this.click("#run-report");
  this.wait(10000, function () {
    this.echo('.geo_country_name.innerText: ' + this.evaluate(function() {
      return document.querySelector('.geo_country_name').innerText;
    }));
    this.echo('td.alignright:nth-child(5).innerText: ' + this.evaluate(function() {
      return document.querySelector('td.alignright:nth-child(5)').innerText;
    }));
  });
});

casper.run();

您可以帮忙吗?

推荐答案

这里有一些猜测:

如果要单击某些按钮提交表格,请不要自动提交表格.删除最后一个参数:

this.fillSelectors('form#report-form', {          
    'input[name="report[start_date]"]': start_date,
    'input[name="report[end_date]"]':  end_date,
    'input[id="grouping-option-3"]' : true,
    'input[id="grouping-option-2"]' : true,
    'input[id="grouping-option-4"]' : true
});

phantomjs不支持element.innerText.您需要使用element.textContent.

本文地址:https://www.itbaoku.cn/post/1740163.html