2013-07-26 5 views

Antwort

8

Dies ist ein bekannter Fehler: https://code.google.com/p/chromedriver/issues/detail?id=294 (nur für Chrome-Treiber, firefox-Treiber funktioniert gut)

+3

Es ist 3 ½ Jahre und keine Reparatur in Sicht. IE, Edge und Opera ahmten auch das chrome-Bugged-Verhalten nach und der letzte Holdout war firefox bis November 2016. Nun hat der neueste Firefox-Treiber ganze Seiten-Screenshots entfernt, um auch dieses Verhalten nachzuahmen. Nachdem es 3 Jahre lang als Chrom-Bug markiert wurde, ist es nun zu einem Feature geworden. – Yojin

+1

Außerdem ist es wichtig zu beachten, dass die [W3C WebDriver Specification] (https://w3c.github.io/webdriver/webdriver-spec.html) darauf hinweist, dass Screenshots nur den sichtbaren View-Port haben sollen. Das Verhalten des Chrome-Treibers entspricht der Spezifikation. – JimEvans

1

Sie

Last html2canvas.js

var script = document.createElement('script'); 
script.type = 'text/javascript'; 
script.src = 'https://github.com/niklasvh/html2canvas/releases/download/0.5.0-alpha1/html2canvas.js'; 
document.head.appendChild(script); 

Befehl zum Download volle Seite verwenden müssen Screenshot von diesem Befehl

html2canvas(document.body).then(function(canvas) { 
    var a = document.createElement('a'); 
     // toDataURL defaults to png, so we need to request a jpeg, then convert for file download. 
     a.href = canvas.toDataURL("image/jpeg").replace("image/jpeg", "image/octet-stream"); 
     a.download = 'somefilename.jpg'; 
     a.click(); 
}) 

können Sie thi anrufen s Skript mit javascriptxecutor und erhalten gewünschte Ergebnisse als Download des Bildes würde automatisch zu Ihrem Standard-Download-Speicherort gestartet und Sie können den Dateinamen mit einem Eingabe-Argument der javascriptexecutor Befehl des Selenium ändern.

hoffe das hilft!

+1

die Qualität saugt, hier ist ein Beispiel http://imgur.com/a/jrZ3p – Toolkit

+0

vielversprechende Idee, aber die Qualität ist nicht groß und eine Vielzahl von Websites implementieren Cross-Domain-Skript Prävention Dinge :( –

2

Might einen Versuch wert, diese Bibliothek zu verwenden:

https://www.assertthat.com/posts/selenium_shutterbug_make_custom_screenshots_with_selenium_webdriver

Um eine vollständige Seite Screenshot zu machen:

Shutterbug.shootPage(driver, ScrollStrategy.BOTH_DIRECTIONS).save(); 

Quellen (es Scroll-and-Stich-Methode verwendet) auf github https://github.com/assertthat/selenium-shutterbug

Bietet ab Es ist möglich, einen vollständigen Bildschirmabdruck in Chrome und einigen anderen erweiterten Funktionen zu erstellen, getestet unter Windows und OS X.

Erfolgreich mit meinem aktuellen Projekt.

+0

Dies ist ein tolles Dienstprogramm für die – jkeuhlen

+1

Scroll-and-Stitch ist gut, aber ein steckender Header wird es verderben – Toolkit

+0

Sie könnten versuchen, relative Position zu sticky Header vor der Aufnahme des Screenshots zu setzen. Etwas wie: ((JavascriptExecutor) webDriver) .executeScript ("Argumente [0 ] .style.position = 'relativ' ", stickyHeaderEl); –

0

Ich weiß, das ist ein alter Thread, aber ich wollte Verwendung von Seleniums ITakesScreenshot zeigen.

using OpenQA.Selenium; 
using System.Drawing.Imaging; 

((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"YourImageNameHere.png", ImageFormat.Png); 
Verwandte Themen