2017-07-22 2 views
0

Voici ma configuration Poltergeist:Poltergeist: capture d'écran recadrée

Capybara.register_driver :poltergeist do |app| 
    Capybara::Poltergeist::Driver.new(app, { screen_size: [1024, 768], window_size: [1024, 768] }) 
end 

Capybara.default_driver = :poltergeist 
Capybara.javascript_driver = :poltergeist 

browser = Capybara.current_session 
# browser.driver.resize(1024, 768) 
# browser.driver.resize_window(1024, 768) 
# browser.current_window.resize_to(1024, 768) 

browser.visit('https://en.wikipedia.org/wiki/Poltergeist') 
browser.save_screenshot('test.jpg') 

La capture d'écran a la bonne taille, mais la fenêtre du navigateur lui-même est recadrée:

enter image description here

J'ai essayé aussi Redimensionner commenté méthodes, mais rien ne résout ce problème. Qu'est-ce qui pourrait entraîner le rognage de la fenêtre du navigateur?

Répondre

1

Le rendu des poltergeists est contrôlé par PhantomJS. Cela semble être causé par Wikipedia en utilisant CSS que PhantomJS ne supporte pas ou a un bug avec. Malheureusement, la version actuelle de PhantomJS (2.1.1) est fondamentalement équivalente à Safari 5, donc elle est loin d'être à jour. Il y a quelques solutions potentielles possibles à cela. Afin d'effort

  1. Si vous utilisez une plate-forme où l'un des Poltergeist actuels 2.5.0 versions bêta peut être exécuté essayer que depuis il est beaucoup plus à jour en CSS et le soutien JS

  2. Utilisez execute_script pour injecter CSS qui est supporté par Poltergeist et remplace le CSS cassé. Très spécifique au site, donc si vous n'obtenez pas seulement des captures d'écran de Wikipédia, ce n'est probablement pas pratique.

  3. Remplacez le sélénium par du chrome sans tête pour générer vos captures d'écran.

# 3 peut ou ne peut pas être plus facile que # 2 en fonction de votre configuration complète

+0

PhantomJS 2.5.beta est la meilleure solution pour moi. – Railsana