我想填写本网站的“Acheter un billet”表格:http://www.leguichet.fr/
这是我到目前为止所做的:
var casper = require('casper').create();
casper.start('http://www.leguichet.fr/', function() {
this.fill('form#search_tickets', {'departure':'1', 'arrival':'2'}, false);
this.click('input[value="Rechercher"]');
this.wait(1000, function() {
this.echo(this.getCurrentUrl());
});
});
casper.run(function(){
this.exit();
});
文档说fill()使用value属性来匹配,但我想使用选项标签内的文本。例如,他们有:
<option value="Montpellier">Montpellier</option>
<option value="Montpellier">Béziers</option>
因此,如果我想选择Béziers,我必须写'出发':'蒙彼利埃'。 有没有办法在选项标签内使用文本?
答案 0 :(得分:0)
最简单的方法是检索要选择的选项的元素值,然后再使用该值。情况可能是在后续选择期间选择了另一个选项,但该值将是相同的,因此不会产生影响:
var x = require('casper').selectXPath;
casper.start('http://www.leguichet.fr/', function() {
var textToSelect = "Béziers";
var value = this.getElementAttribute(x("//form[@id='search_tickets']//select[@name='departure']/option[contains(text(), '" + text + "')]"), 'value');
this.fill('form#search_tickets', {'departure': value, 'arrival':'2'}, false);
this.click('input[value="Rechercher"]');
this.wait(1000, function() {
this.echo(this.getCurrentUrl())
});
});
您可以使用text()
函数测试文本内容,轻松选择带有XPath的DOM节点。对arrival
执行相同的操作。