Nehmen ganzseitige Abbildung in Chrom mit Selen
Ich weiß, das war nicht möglich vor, aber jetzt mit dem folgenden update:
https://developers.google.com/web/updates/2017/04/devtools-release-notes#screenshots
scheint dies möglich zu sein, mit Chrome Dev Tools.
Ist es jetzt möglich mithilfe von Selen in Java?
- AFAIK ist dies möglich, in
selenium
+PhantomJS
- Ja aber ich brauche den Chrome-Treiber
- Wenn Sie mit Java, es sieht aus wie jemand hat eine schöne Bibliothek, das zu tun diese Art der Sache für Sie. Vielleicht geben diese einen Versuch github.com/yandex-qatools/ashot
- die Bibliothek spielt mit javascript das scrollen durch die Seite und nehmen Sie viele screenshots gemacht.. ich habe einen ähnlichen Ansatz in meinen code aber das funktioniert nicht gut, wenn es einen schwebenden Fenster..
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dazu mit Selenium Webdriver in Java dauert ein bisschen Arbeit.. Wie angedeutet, durch Florent B. wir ändern müssen, einige Klassen verwendet, die von der Standard-ChromeDriver um diese Arbeit zu machen. Zuerst müssen wir eine neue DriverCommandExecutor fügt die neue Chrome-Befehle:
Danach müssen wir eine neue erstellen ChromeDriver Klasse, die werden dann mit diesem Ding. Wir brauchen, um die Klasse zu erstellen, denn das original hat keinen Konstruktor, können wir ersetzen den Befehl executor... Also die neue Klasse wird:
Dies ist vor allem eine Kopie der ursprünglichen Klasse, aber mit einigen Konstruktoren deaktiviert (weil einige der benötigten code-package-private). Wenn Sie in der Notwendigkeit diese Konstruktoren müssen Sie die Klassen im package org.openqa.Selen.chrome.
Mit diesen änderungen, die Sie sind in der Lage, um den erforderlichen code, wie gezeigt, durch Florent B., jetzt aber in Java mit der Selenium-API:
Diese können Sie verwenden Sie die angegebenen Befehle aus und erstellt eine Datei mit dem png-Bild drin. Sie können natürlich auch direkt eine BufferedImage mittels ImageIO.read () - auf die Byte.
Es ja möglich, eine ganzseitige Abbildung mit Selen, da Chrome v59. Die Chrome-Fahrer hat zwei neue Endpunkte ein direkter Aufruf der DevTools API:
Selen-API nicht implementieren diese Befehle, so müssen Sie senden Sie Sie direkt mit der zugrunde liegenden Testamentsvollstrecker. Es ist nicht einfach, aber zumindest ist es möglich, zu produzieren, die genau das gleiche Ergebnis wie DevTools.
Hier ist ein Beispiel mit python arbeiten auf einem lokalen oder remote-Instanz:
und den code, um eine vollständige Seite screenshot :
Mit Java:
HttpCommandExecutor
- und call -defineCommand
verwenden Sie den neuen Endpunkt. Anschließend instanziieren Sie ein neues RemoteWebDriver mit der erweitertenHttpCommandExecutor
.Emulation.setVisibleSize
ist jetzt veraltet. Dort wurden ersetzt durch "Emulation.setDeviceMetricsOverride" und "Emulation.clearDeviceMetricsOverride". Es scheint nicht mehr möglich, das einfrieren der Größe des Viewports. Also der screenshot wird wahrscheinlich abgeschnitten werden, auf dem Boden, wenn die Größe der Inhalte richtet sich nach der Größe des Viewports. Ich habe auch den code für Java.Emulation.setVisibleSize
markiert als veraltet und wird entfernt werden von der API.