255 votes

Faites défiler l'élément dans la vue avec sélénium

Est-il de toute façon dans les deux Sélénium 1.x ou 2.x pour faire défiler la fenêtre du navigateur de sorte qu'un élément est identifié par un XPath est en vue du navigateur? Il y a une méthode focus en Sélénium, mais il ne semble pas physiquement faites défiler l'affichage dans FireFox. Quelqu'un aurait-il des suggestions sur la façon de faire cela?

La raison j'ai besoin c'est que je suis en essais clic sur un élément de la page. Malheureusement, l'événement n'a pas l'air de fonctionner, sauf si l'élément est visible. Je n'ai pas de contrôle du code qui se déclenche lorsque l'élément est cliqué, donc je ne peux pas corriger ou apporter des modifications à elle, donc, la solution la plus simple, faites défiler jusqu'à l'élément dans la vue.

Pensées?

282voto

Amith Points 2191

J'ai essayé beaucoup de choses en ce qui concerne le défilement, mais le code ci-dessous a donné de meilleurs résultats.

Cela défilera jusqu'à ce que l'élément soit visible:

 WebElement element = driver.findElement(By.id("id_of_element"));
((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
Thread.sleep(500); 

//do anything you want with the element
 

189voto

sascha Points 1

Vous pouvez utiliser la classe "org.openqa.selenium.interactions.Actions" pour passer à un élément:

 WebElement element = driver.findElement(By.id("my-id"));
Actions actions = new Actions(driver);
actions.moveToElement(element);
// actions.click();
actions.perform();
 

29voto

Mayur Points 399
 JavascriptExecutor js = (JavascriptExecutor) driver;
        js.executeScript("javascript:window.scrollBy(250,350)");
 

Vous voudrez peut-être essayer ceci.

17voto

Ankit Pandey Points 191

Si vous souhaitez faire défiler la fenêtre firefox à l’aide de sélenium webdriver, l’un des moyens consiste à utiliser javaScript dans le code java. Le code javaScript à faire défiler (en bas de la page Web) est le suivant:

 JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("window.scrollTo(0,Math.max(document.documentElement.scrollHeight,document.body.scrollHeight,document.documentElement.clientHeight));");
 

2voto

AutomatedTester Points 14713

Selenium 2 essaie de faire défiler jusqu'à l'élément puis de cliquer dessus. En effet, le sélénium 2 n'interagira pas avec un élément s'il ne pense pas qu'il est visible.

Le défilement de l'élément s'effectue implicitement, il vous suffit donc de rechercher l'élément, puis de le manipuler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X