Come faccio a scaricare Selenium WebDriver per scorrere su un particolare elemento per farlo apparire sullo schermo. Ho provato molte opzioni diverse ma non ho avuto fortuna. Non funziona nelle associazioni C#?Come scorrere fino a elemento con Selenium WebDriver usando C#
Posso farlo saltare in una posizione particolare ex ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollTo(0, document.body.scrollHeight - 150)");
Ma voglio essere in grado di inviarlo a elementi diversi senza dare la posizione esatta ogni volta.
public IWebElement Example { get { return Driver.FindElement(By.Id("123456")); } }
Ex 1) ((IJavaScriptExecutor)Driver).ExecuteScript("arguments[0].scrollIntoView(true);", Example);
Ex 2) ((IJavaScriptExecutor)Driver).ExecuteScript("window.scrollBy(Example.Location.X", "Example.Location.Y - 100)");
Quando lo guardo, ma non salta in basso nella pagina all'elemento, e l'eccezione corrisponde elemento essendo fuori dallo schermo .
Aggiornamento: Ho aggiunto un bool ex = Example.Exists(); dopo di esso e controllato i risultati. Esiste (è vero). Non visualizzato (poiché è ancora fuori dallo schermo in quanto non è stato spostato sull'elemento) Non selezionato ??????
Qualcuno sta vedendo successo By.ClassName. Qualcuno sa se c'è un problema nel fare questo By.Id nelle associazioni C#?
Forse si può provare a simulare la pressione dei tasti "Freccia in basso", fino a quando l'Eccezione non scompare. So che sta correndo contro il muro fino a quando il muro non si rompe, ma se vuoi che funzioni in qualche modo potrebbe essere una soluzione ?! – krizz
Puoi provare con una cosa, usare il metodo ExpectedConditions.visibilityOfElement e metterlo come una condizione del ciclo while e in loop far scorrere la vista da alcuni dicono 100, 100 coordinate. –
Prima che il javascript venga chiamato, sei sicuro che WebDriver abbia trovato il tuo elemento? – Jordan