使用Casperjs提交表格

时间:2017-03-01 14:10:31

标签: casperjs

我在casperJS中尝试了各种方法来填写并提交表单。代码如下所示。最终,我正在建造一个机器人,以自动检查IAG Cargo门户网站上货物空运提单的状态。

Sendkeys将填写表单,但我无法点击“搜索”按钮。

使用casperJS表单填写方法根本不起作用。

这是一个不寻常的网站还是我做错了什么?

在下面的代码中,程序似乎在线上失败

this.clickLabel('SEARCH','button');

并且后续代码不会运行。

(我在这个例子中使用过虚拟空运提单编号,因此最后一页将显示“未找到空运提单”)

    var casper = require('casper').create();

var x = require('casper').selectXPath;

phantom.cookiesEnabled = true;

casper.userAgent('Mozilla/4.0 (compatable; MSIE 6.0; Windows NT 5.1)');

casper.start('https://www.iagcargo.com/iagcargo/portlet/en/html/601/main/search');

casper.waitForSelector("#awb_cia", function() {

    this.echo('Selector found');
    casper.capture('iag_start.png');

    this.sendKeys('#awb_cia','125');
    this.sendKeys('#awb_cod','12345675');

});

casper.then(function step2() {

    this.clickLabel('SEARCH', 'button');

    this.echo('this is step 2');    

    casper.capture('iag_end.png');
    });


require('utils').dump(casper.steps.map(function(step) {
    return step.toString();
}));


casper.run();

2 个答案:

答案 0 :(得分:0)

无法点击是一个常见问题,可能有很多原因。 clickLabel()不会在这里工作,因为它不是按钮标记,而是输入标记。这是我在页面上看到的内容:

你可以试试这个, casper.click('输入[值="搜索"]&#39);

一般来说,点击元素时可以尝试以下内容。

  1. 尝试更改viewportSize,例如 viewportSize:{width:1024,height:768}
  2. 这是因为,casperjs不会点击页面上看不到的任何内容。

    1. 如果使用xpath选择器,请尝试使用CSS。 XPath选择器很脆弱,并且在所有浏览器中都不起作用。

    2. 有时jquery点击有效,例如

      casper.evaluate(函数(){     var element = document.querySelector(' span.control.critical.closer');     $(元件)。单击(); });

    3. 如果按钮标签内有一个功能,您可以直接调用该功能。例如。 搜索 你可以直接调用那个函数, casper.someFunc();

答案 1 :(得分:0)

var casper = require('casper').create({
  verbose: true,
  logLevel: "debug",
  waitTimeout: 60000,
  resourceTimeout: 10000,
  viewportSize: {
    width: 1024,
    height: 768
  },
  pageSettings: {
    javascriptEnabled: true,
    loadImages: true,
    loadPlugins: true
  }
});

var x = require('casper').selectXPath;

phantom.cookiesEnabled = true;

casper.userAgent('Mozilla/4.0 (compatable; MSIE 6.0; Windows NT 5.1)');

casper.start('https://www.iagcargo.com/iagcargo/portlet/en/html/601/main/search');

casper.waitForSelector("#awb_cia", function() {

  this.echo('Selector found');
  casper.capture('iag_start.png');

  this.sendKeys(x('//*[@id="awb_cia"]'),'125');
  this.sendKeys('#awb_cod','12345675');
  this.capture('iag_middle.png');

});

casper.then(function step2() {

  if(this.exists('body > div.cuerpo > div.cuerpo > div.contenido > div > form > table > tbody > tr > td:nth-child(3) > input')){

    this. click('body > div.cuerpo > div.cuerpo > div.contenido > div > form > table > tbody > tr > td:nth-child(3) > input');

  }


});
casper.then(function step3() {
  this.echo('this is step 2');

  casper.capture('iag_end.png');
});

//require('utils').dump(casper.steps.map(function(step) {
//   return step.toString();
//}));


casper.run();