CasperJS - это вспомогательная библиотека для запуска скриптов PhantomJS.PhantomJS имеет довольно устаревший веб-движок, который не поддерживает современный javascript, поэтому сайты все чаще и чаще ломаются в PhantomJS.Целевой сайт - один из тех, которые не будут полностью работать в PhantomJS или даже в Internet Explorer 11.
Но используя polyfills , библиотеки, которые эмулируют новые функции js для старых браузеров, мы можем использоватьCasperJS немного дольше.Здесь я внедряю отличную библиотеку core.js сразу после создания страницы в PhantomJS, но перед переходом на сайт.Таким образом, наш старый браузер будет обладать новым набором функций JavaScript.
var casper = require('casper').create({
// it's better to blend with the crowd
pageSettings: {
userAgent: "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36",
loadImages: false
},
viewportSize : { width: 1280, height: 720 },
verbose: true,
});
// Apply the bandaid in the form of core.js polyfill
casper.on('page.initialized', function() {
casper.page.injectJs('./core.js');
});
casper.start('https://betyetu.co.ke/sportsbook/SOCCER/');
casper.waitFor(function check() {
return this.evaluate(function () {
return document.querySelectorAll('div.events-app__group').length > 1;
});
}, function then() {
var count = this.evaluate(function () {
return document.querySelectorAll('div.events-app__group').length;
});
this.echo('Found elements: ' + count);
casper.capture('screen.jpg');
}, function timeout() {
this.echo('Still timing out before returning element count');
}, 5000);
casper.run();
Найдено элементов: 28