У меня есть минимальные знания в casperjs & JavaScript, и мы пытались протестировать наш новый сайт. Пройдя через документацию casperjs и разработав несколько примеров программ, я получил некоторое представление о функции оценки(). Но теперь я застрял в странной проблеме. Я использовал функцию оценки, чтобы найти все ссылки внутри веб-страницы. Теперь я пытаюсь перейти на все эти ссылки и получить информацию о них. Теперь моя проблема в том, что во второй раз, когда я использую функцию оценки(), она просто пропускается. Это совершенно неожиданное поведение. Пожалуйста, заполните, что мне не хватает. Я прикрепил этот пример кода, который я использовал для воспроизведения проблемы.CasperJS функция оценки не работает во второй раз
var BASE_URL = "http://www.google.com";
var links = [];
var divs = [];
var casper = require('casper').create({verbose: true,});
function getLinks() {
var links = document.querySelectorAll('h3.r a');
return Array.prototype.map.call(links, function(e) {
return e.getAttribute('href');
});
}
function getDivs(){
__util__.echo("get Divs Function");
var divs = document.getElementsByTagName('div');
return Array.prototype.map.call(divs, function(e) {
return e;
});
}
casper.start(BASE_URL, function() {
this.fill('form[action="/search"]', { q: 'casperjs' }, true);
});
casper.then(function() {
links = this.evaluate(getLinks);
this.echo("links == " + links);
});
casper.waitForUrl(BASE_URL, function(){
this.echo(this.getCurrentUrl());
}, function(){}, 20000);
casper.then(function() {
this.echo("------------------")
divs = this.evaluate(getDivs);
this.echo("^^^^^^^^^^^^^^^^^^")
this.echo("divs == " + divs);
});
casper.run();
Будет интересно, если это исправить, так как эти полуколоны являются необязательными. См. Http://www.codecademy.com/blog/78-your-guide-to-semicolons-in-javascript (но, лично, я всегда их вставлял!) (Кстати, я не видел никаких * неверно совпадающие * двойные/одинарные кавычки - это то, что вы имели в виду?) –
@ DarrenCook, вы правы. Мои извинения. Я отредактировал свой ответ с рабочим решением. –