Javascript 使用带有CasperJS的标记内的文本填充表单的选择框
我想填写本网站的Acheter un表格: 这就是我到目前为止所做的:Javascript 使用带有CasperJS的标记内的文本填充表单的选择框,javascript,html-select,casperjs,Javascript,Html Select,Casperjs,我想填写本网站的Acheter un表格: 这就是我到目前为止所做的: 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"]')
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>
因此,如果我想选择贝齐尔,我必须写“出发”:“蒙彼利埃”。
有没有办法使用选项标记内的文本?最简单的方法是检索要选择的选项的元素值,然后使用该值。在随后的选择过程中,可能会选择另一个选项,但该值将相同,因此不会产生差异:
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函数测试DOM节点的文本内容,可以轻松地使用XPath选择DOM节点。到达时也要做同样的事情。谢谢你回答Artjom B。我试过了,但不起作用,即使将text改为select by text。如果我将this.echovalue添加到this.fill之前,它会显示该值为null。好的,我发现。。。缺少括号:[containstext,'+text+']