2013-07-26 8 views

risposta

8

Questo è un bug noto: https://code.google.com/p/chromedriver/issues/detail?id=294 (solo per il driver Chrome, Firefox conducente funziona bene)

+3

Sono passati 3 anni e mezzo e non ci sono problemi in vista. IE, Edge e Opera hanno anche imitato il comportamento bug cromato e l'ultimo holdout è stato firefox fino a novembre 2016. Ora l'ultimo driver firefox ha rimosso gli screenshot della pagina intera per simulare anche questo comportamento. Quindi, dopo essere stato contrassegnato come bug di Chrome per 3 anni, ora è diventato una funzionalità. – Yojin

+1

Inoltre, è importante notare che [W3C WebDriver Specification] (https://w3c.github.io/webdriver/webdriver-spec.html) richiama l'attenzione sul fatto che gli screenshot devono essere solo della porta di visualizzazione visibile. Il comportamento del driver Chrome è conforme alle specifiche. – JimEvans

1

è necessario utilizzare

carico 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); 

comando per scaricare tutta pagina screenshot con questo comando

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(); 
}) 

si può chiamare Lo script s utilizza javascriptexecutor e ottiene i risultati desiderati in quanto il download dell'immagine si avvierà automaticamente al percorso di download predefinito e si può cambiare il nome del file con un argomento di input del comando javascriptexecutor del selenio.

spero che questo aiuti!

+1

la qualità fa schifo, ecco un esempio http://imgur.com/a/jrZ3p – Toolkit

+0

promettente idea ma la qualità non è eccezionale e molti siti implementano cose di prevenzione di script su più domini :( –

2

Potenza pena di provare a usare questa libreria:

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

Per effettuare una pagina intera schermata:

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

(si utilizza il metodo di scorrimento e-punto)

Fonti su github https://github.com/assertthat/selenium-shutterbug

Fornisce un ility per rendere lo screenshot della pagina intera in Chrome e alcune altre funzionalità estese, testate su Windows e OS X.

Utilizzare con successo sul mio progetto corrente.

+0

Questa è un'utilità fantastica per – jkeuhlen

+1

scroll-and-stitch è buono ma l'intestazione si guasterebbe – Toolkit

+0

Si potrebbe provare a impostare l'ubicazione relativa sull'intestazione appiccicosa prima di acquisire lo screenshot Qualcosa come: ((JavascriptExecutor) webDriver) .executeScript ("argomenti [0 ] .style.position = 'relative' ", stickyHeaderEl); –

0

So che questo è un thread vecchio, ma volevo mostrare l'uso di ItakesScreenshot di Selenium.

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

((ITakesScreenshot)driver).GetScreenshot().SaveAsFile(@"YourImageNameHere.png", ImageFormat.Png); 
Problemi correlati