Manipulation du DOM avec PhantomJS
Je suis à l'aide de PhantomJS pour créer des captures d'écran de l'arbitraire des Url. Avant la capture d'écran est prise, je veux manipuler la page de DOM pour supprimer tous les menus drop-down, comme PhantomJS rend de manière incorrecte dans le coin supérieur gauche de la page (connue Fantôme question.)
J'ai un simple DOM script pour faire cela avec:
var selects = document.getElementsByTagName('select');
for (var i=0; i < selects.length; i++) {
document.getElementsByTagName('select')[i].style.visibility="hidden";
}
Cela a été testé et fonctionne très bien en tant que stand-alone Javascript. Il n'est pas cependant le travail à l'intérieur de la PhantomJS code j'utilise pour recueillir les captures d'écran (dernière partie):
page.open(address, function (status) {
if (status !== 'success') {
console.log('Unable to load the address!');
} else {
window.setTimeout(function () {
var selects = document.getElementsByTagName('select');
for (var i=0; i < selects.length; i++) {
document.getElementsByTagName('select')[i].style.visibility="hidden";
}
page.render(output);
phantom.exit();
}, 200);
}
});
Certaines pages sont encore rendu avec une boîte de sélection dans le mauvais endroit. Je vous remercie de l'aide, soit la résolution de l'original PhantomJS rendu de bug ou de cacher les menus déroulants dans les DOM. Merci.
OriginalL'auteur eli | 2012-08-29
Vous devez vous connecter pour publier un commentaire.
L'exécuter dans le bon contexte, c'est à dire à l'intérieur de la page avec
page.evaluate
. Il y a beaucoup de exemples inclus avec PhantomJS qui démontrent, par exemple,useragent.js.Bonjour, mon ami! merci de m'aider ce problème
OriginalL'auteur Ariya Hidayat
Ce code ne fonctionne pas?
J'ai utilisé votre cache sélectionne la variable dans la boucle au lieu de re-sélectionnant les éléments du DOM pour améliorer les performances.
OriginalL'auteur Cameron Tinker