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
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 diwindow.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".
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;')