我在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();
答案 0 :(得分:0)
无法点击是一个常见问题,可能有很多原因。 clickLabel()不会在这里工作,因为它不是按钮标记,而是输入标记。这是我在页面上看到的内容:
你可以试试这个, casper.click('输入[值="搜索"]&#39);
一般来说,点击元素时可以尝试以下内容。
这是因为,casperjs不会点击页面上看不到的任何内容。
如果使用xpath选择器,请尝试使用CSS。 XPath选择器很脆弱,并且在所有浏览器中都不起作用。
有时jquery点击有效,例如
casper.evaluate(函数(){ var element = document.querySelector(' span.control.critical.closer'); $(元件)。单击(); });
如果按钮标签内有一个功能,您可以直接调用该功能。例如。 搜索 你可以直接调用那个函数, 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();