如何使用 CasperJS 填充搜索字段
How fill a search field with CasperJS
我需要在 this site 的搜索字段中输入“75018”,然后使用 CasperJS 单击搜索按钮。
我 read this 问题,并按照说明进行操作,我得到了用于调试的屏幕截图,但它没有点击按钮。
我试过了
var x = require('casper').selectXPath;
var casper = require('casper').create({
clientScripts: [
'jquery-1.10.1.min.js'
],
pageSettings: {
loadImages: true,
loadPlugins: true,
userAgent: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36',
webSecurityEnabled: false,
ignoreSslErrors: false,
sslProtocol: "tlsv1"
},
verbose: true,
logLevel: 'warning'
// logLevel: 'debug'
});
var utils = require('utils');
var fs = require('fs');
var system = require('system');
casper.options.viewportSize = {width: 1920, height: 1080};
var counter = 0;
var dejaexclu = false;
function getData(filepath){
var eol = system.os.name == 'windows' ? "\r\n" : "\n";
var data = fs.read(filepath);
//utils.dump(data);
var arrdata = data.split(eol);
//utils.dump(arrdata);
return arrdata;
}
function count(){
counter = counter +1;
return counter;
}
casper.start('http://www.chronodrive.com', function() {
console.log("page loaded");
this.test.assertExists('form#searchShopForm', 'form is found');
this.fill('form#searchShopForm', {
searchField: '75018'
}, true);
});
casper.then(function() {
console.log("photo");
console.log("photo");
this.click('#blinksubmit');
this.captureSelector("screenshot.png", "html");
console.log("photo");
});
casper.run();
我的屏幕截图显示我可以在字段中输入值,但它没有点击
试试这个
this.fillSelectors('form#searchShopForm', {
"input[id='searchField']" : "75018"
}, true);
见http://docs.casperjs.org/en/latest/modules/casper.html#fillselectors
或在您的搜索字段周围加上引号
例如
'searchField' : '75018'
见http://docs.casperjs.org/en/latest/modules/casper.html#fill
啊抱歉,我看到这是一个自动建议,没有提交按钮的概念。因此,将 true 更改为 false,然后尝试使用 sendkeys 发送回车键,例如
CasperJS: swallows special keys like Enter?
编辑
此代码有效问题不在于 casper,而在于搜索框和动画。那是事情需要一些时间来证明。 golden casper 的经验法则是每次你要求一个新的 resource/page/script/html/json 然后使用 casper.waitForXXX[=44 是个好主意=] 这允许等待服务器或动画等的时间。
var casper = require('casper').create({
viewportSize : {width: 1920, height: 1080}
});
casper.start('http://www.chronodrive.com/prehome');
casper.waitForText("Pour toutes", function() {
this.sendKeys('#searchField', '06150 bordeaux', {keepFocus: true});
this.sendKeys('#searchField', casper.page.event.key.Enter , {keepFocus: true});
});
casper.waitForText("Cannes", function() {
casper.capture('tmp.jpg');
});
casper.run();
我需要在 this site 的搜索字段中输入“75018”,然后使用 CasperJS 单击搜索按钮。 我 read this 问题,并按照说明进行操作,我得到了用于调试的屏幕截图,但它没有点击按钮。
我试过了
var x = require('casper').selectXPath;
var casper = require('casper').create({
clientScripts: [
'jquery-1.10.1.min.js'
],
pageSettings: {
loadImages: true,
loadPlugins: true,
userAgent: 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.2 Safari/537.36',
webSecurityEnabled: false,
ignoreSslErrors: false,
sslProtocol: "tlsv1"
},
verbose: true,
logLevel: 'warning'
// logLevel: 'debug'
});
var utils = require('utils');
var fs = require('fs');
var system = require('system');
casper.options.viewportSize = {width: 1920, height: 1080};
var counter = 0;
var dejaexclu = false;
function getData(filepath){
var eol = system.os.name == 'windows' ? "\r\n" : "\n";
var data = fs.read(filepath);
//utils.dump(data);
var arrdata = data.split(eol);
//utils.dump(arrdata);
return arrdata;
}
function count(){
counter = counter +1;
return counter;
}
casper.start('http://www.chronodrive.com', function() {
console.log("page loaded");
this.test.assertExists('form#searchShopForm', 'form is found');
this.fill('form#searchShopForm', {
searchField: '75018'
}, true);
});
casper.then(function() {
console.log("photo");
console.log("photo");
this.click('#blinksubmit');
this.captureSelector("screenshot.png", "html");
console.log("photo");
});
casper.run();
我的屏幕截图显示我可以在字段中输入值,但它没有点击
试试这个
this.fillSelectors('form#searchShopForm', {
"input[id='searchField']" : "75018"
}, true);
见http://docs.casperjs.org/en/latest/modules/casper.html#fillselectors
或在您的搜索字段周围加上引号
例如
'searchField' : '75018'
见http://docs.casperjs.org/en/latest/modules/casper.html#fill
啊抱歉,我看到这是一个自动建议,没有提交按钮的概念。因此,将 true 更改为 false,然后尝试使用 sendkeys 发送回车键,例如
CasperJS: swallows special keys like Enter?
编辑
此代码有效问题不在于 casper,而在于搜索框和动画。那是事情需要一些时间来证明。 golden casper 的经验法则是每次你要求一个新的 resource/page/script/html/json 然后使用 casper.waitForXXX[=44 是个好主意=] 这允许等待服务器或动画等的时间。
var casper = require('casper').create({
viewportSize : {width: 1920, height: 1080}
});
casper.start('http://www.chronodrive.com/prehome');
casper.waitForText("Pour toutes", function() {
this.sendKeys('#searchField', '06150 bordeaux', {keepFocus: true});
this.sendKeys('#searchField', casper.page.event.key.Enter , {keepFocus: true});
});
casper.waitForText("Cannes", function() {
casper.capture('tmp.jpg');
});
casper.run();