2014-09-08 12 views
6

Usando il selenio con java, ho bisogno di testare un pulsante "Torna all'inizio", quindi quello che ho fatto è scorrere la pagina verso il basso fino a quando viene visualizzato il pulsante "Torna all'inizio" (così com'è visualizzato quando si scorre il 25% della pagina) e fare clic su di esso, questo pulsante porta l'utente in cima alla pagina, ora ho bisogno di controllare che funzioni e la parte visibile è la parte superiore della pagina. Come posso farlo usando java?Selenio, come si controlla la posizione di scorrimento

risposta

15

Il principio generale è di verificare il valore di window.pageYOffset nel browser. Se il pulsante scorre completamente torna poi window.pageYOffset dovrebbe avere un valore pari a 0. Assumendo che la variabile driver tiene la vostra WebDriver esempio:

JavascriptExecutor executor = (JavascriptExecutor) driver; 
Long value = (Long) executor.executeScript("return window.pageYOffset;"); 

È quindi possibile verificare che value è 0. executeScript viene utilizzato per l'esecuzione Codice JavaScript nel browser.

Questa risposta inizialmente menzionata scrollY ma non è supportata su IE. Il MDN page on it, dice:

Per la compatibilità cross-browser, utilizzare window.pageYOffset invece di window.scrollY. Inoltre, le versioni precedenti di Internet Explorer (< 9) non supportano nessuna delle due proprietà e devono essere aggirate controllando altre proprietà non standard. Un esempio ampiamente compatibile:

var supportPageOffset = window.pageXOffset !== undefined; 
var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat"); 

var x = supportPageOffset ? window.pageXOffset : isCSS1Compat ? document.documentElement.scrollLeft : document.body.scrollLeft; 
var y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop; 

Grazie a R. Oosterholt per i "testa a testa".

4

La risposta di Louis funziona, ma non è completamente compatibile con i browser, poiché Internet Explorer non supporta window.scrollY. Raccomando invece di usare window.pageYOffset - questo restituisce lo stesso valore ma è compatibile con browser diversi.

Fonte: https://developer.mozilla.org/en-US/docs/Web/API/Window/scrollY

Ecco il blocco di codice precedente con il codice modificato:

JavascriptExecutor executor = (JavascriptExecutor) driver; 
Long value = (Long) executor.executeScript("return window.pageYOffset;"); 

Inoltre, la sintassi per Ruby (quello che uso per la mia posizione corrente, assumendo come prima che l'istanza del driver è accessibile attraverso il nome della variabile, "driver"):

driver.execute_script('return window.pageYOffset;') 
Problemi correlati