CasperJS'de waitForSelector()
ve captureSelector()
10 yöntemlerini kullanıyorum ve bir CSS seçiciyi kullanarak bir öğe seçip ekran görüntüsünü kaydedin.casperjs: document.querySelector öğesi bir null değerini döndürüyor
Ancak, css background
transparent
olarak ayarlandı çünkü ekran görüntüsü oldukça çirkin çıkıyor bu bulgu, o yüzden background
white
ayarlı istiyorum. Ben bir evaluate() çağrı document.querySelector
kullanıyorum made sure var, ama bu işe yaramaz. İşte
casper.start(...
önce her şeyi göz ardı edebilirsiniz, sadece bir sonraki kod parçacığı için bağlam için başlangıç kısmı dahil):
var casper = require("casper").create({
verbose: true,
clientScripts: ["libs/jquery-1.10.2.js"]
});
var utils = require("utils");
var requiredOptions = [ 'url', 'selector', 'filename' ];
var missingOptions = new Array();
for (var i = 0 ; i < requiredOptions.length ; i++) {
var opt = requiredOptions[i];
if (!casper.cli.has(opt)) {
missingOptions.push(opt);
}
}
if (missingOptions.length > 0) {
casper.die("\nMissing the following CLI options: " + missingOptions.join(", ") + "\n\nExiting.\n");
}
var url = casper.cli.get('url');
var selector = casper.cli.get('selector');
var filename = casper.cli.get('filename');
casper.start(url, function() {
this.waitForSelector(selector, function then() {
var element = this.evaluate(function() {
return document.querySelector(selector);
});
console.log(element); // returns null
element.style.backgroundColor = "white"; // throws TypeError: 'null' is not an object (evaluating 'element.style')
this.captureSelector("captures/" + filename, selector);
}, function onTimeout() {
this.die("URL timed out.");
});
});
casper.run();
Ve ben bir url geçerken bu alıyorum çıkışı , seçici, ve dosya adı ekran görüntüsü yazmak için:
yiqing:~/Repos/rectslice()$ casperjs slice.js --filename='screenshot.png' --url='https://github.com/n1k0/casperjs/issues/192' --selector='.discussion-bubble-inner'
null
TypeError: 'null' is not an object (evaluating 'element.style')
/Users/yiqing/Repos/rectslice/slice.js:31 in then
/Users/yiqing/Repos/rectslice:1329 in runStep
/Users/yiqing/Repos/rectslice:332 in checkStep
Not: Evet, ben ... ben sadece kullanmaya karar (arka plan beyaz olduğundan değil) bu ekran görüntüsü ince çıkıyor farkındayım herhangi bir eski url, sadece ben document.query()
aramanın beklendiği gibi çalışmadığını göstermeye çalıştığım için. Ayrıca
, versiyonları alakalı, ama burada onlar zaten eğer emin değil: Sen sorunları çalıştıran
yiqing:~/Repos/rectslice()$ casperjs --version
1.0.2
yiqing:~/Repos/rectslice()$ phantomjs --version
1.9.0
Harika, bu hile yaptı, teşekkürler! Ben() 'nin geri nesnelerini geri alamadıklarını bilmiyordum, bu yüzden TIL :) ŞİMDİ ekran görüntüsünün neden kesildiğini anlamaya çalışıyorum :( – 3cheesewheel
[viewport size] değiştirmeyi deneyebilirsiniz. http://docs.casperjs.org/en/latest/modules/casper.html#viewportsize) – hexid
veya tüm görünüm boyutunu birlikte kaldırın. –