Прокрутка страницы вверх или вниз в Selenium WebDriver (Selenium 2) с использованием java

Я написал следующий код в Selenium 1 (aka Selenium RC) для прокрутки страницы с использованием java:

selenium.getEval("scrollBy(0, 250)"); 

Что такое эквивалентный код в Selenium 2 (WebDriver)?

11 Solutions collect form web for “Прокрутка страницы вверх или вниз в Selenium WebDriver (Selenium 2) с использованием java”

Для прокрутки вниз :

 WebDriver driver = new FirefoxDriver(); JavascriptExecutor jse = (JavascriptExecutor)driver; jse.executeScript("window.scrollBy(0,250)", ""); 

ИЛИ, вы можете сделать следующее:

 jse.executeScript("scroll(0, 250);"); 

Для прокрутки вверх :

 jse.executeScript("window.scrollBy(0,-250)", ""); OR, jse.executeScript("scroll(0, -250);"); 

Прокрутка до нижней части страницы:

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

Есть много способов прокрутки вверх и вниз в Selenium Webdriver. Я всегда использую Java Script для этого.

Ниже приведен код, который всегда работает для меня, если я хочу прокручивать вверх или вниз

  // This will scroll page 400 pixel vertical ((JavascriptExecutor)driver).executeScript("scroll(0,400)"); 

Вы можете получить полный код отсюда. Прокрутить страницу в Selenium

Если вы хотите прокручивать элемент, то ниже fragment кода будет работать для вас.

 je.executeScript("arguments[0].scrollIntoView(true);",element); 

Вы получите полный документ здесь. Прокрутите список для определенного элемента

Это не может быть точным ответом на ваш вопрос (с точки зрения WebDriver), но я обнаружил, что библиотека java.awt более стабильна, чем selenium.Keys . Таким образом, действие вниз страницы с использованием первого будет:

 Robot robot = new Robot(); robot.keyPress(KeyEvent.VK_PAGE_DOWN); robot.keyRelease(KeyEvent.VK_PAGE_DOWN); 
 JavascriptExecutor js = ((JavascriptExecutor) driver); 

Прокрутить вниз:

 js.executeScript("window.scrollTo(0, document.body.scrollHeight);"); 

Прокрутка вверх:

 js.executeScript("window.scrollTo(0, -document.body.scrollHeight);"); 

Я не хотел использовать JavaScript или любые внешние библиотеки, поэтому это было мое решение (C #):

 IWebElement body = Driver.FindElement(By.TagName("body")); IAction scrollDown = new Actions(Driver) .MoveToElement(body, body.Size.Width - 10, 15) // position mouse over scrollbar .ClickAndHold() .MoveByOffset(0, 50) // scroll down .Release() .Build(); scrollDown.Perform(); 

Вы также можете легко сделать это методом расширения для прокрутки вверх или вниз по любому элементу.

Попробуй это

  Actions dragger = new Actions(driver); WebElement draggablePartOfScrollbar = driver.findElement(By.xpath("//*[@id='jobreslist_outercontainer']/div/div[2]/div")); // drag downwards int numberOfPixelsToDragTheScrollbarDown = 50; for (int i=10;i<500;i=i+numberOfPixelsToDragTheScrollbarDown){ try{ // this causes a gradual drag of the scroll bar, 10 units at a time dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); Thread.sleep(1000L); }catch(Exception e1){} } // now drag opposite way (downwards) numberOfPixelsToDragTheScrollbarDown = -50; for (int i=500;i>10;i=i+numberOfPixelsToDragTheScrollbarDown){ // this causes a gradual drag of the scroll bar, -10 units at a time dragger.moveToElement(draggablePartOfScrollbar).clickAndHold().moveByOffset(0,numberOfPixelsToDragTheScrollbarDown).release().perform(); Thread.sleep(1000L); } 

Вы должны добавить прокрутку на страницу, чтобы выбрать все элементы, используя Selenium.executeScript("window.scrollBy(0,450)", "") .

Если у вас большой список, добавьте прокрутку несколько раз через выполнение. Обратите внимание, что прокрутка переходит только к определенной точке на странице (0,450).

 JavascriptExecutor jse = ((JavascriptExecutor) driver); jse.executeScript("window.scrollTo(0, document.body.scrollHeight)"); 

Этот код работает для меня. Как страница, которую я тестирую, загружается при прокрутке вниз.

Исполнитель Javascript всегда отлично работает:

 ((JavascriptExecutor) driver).executeScript("scroll(0,300)"); 

где (0,300) – горизонтальное и вертикальное расстояния соответственно. Положите свои расстояния в соответствии с вашими требованиями.

Если вы перфекционист и хотите получить точное расстояние, которое вам нравится прокручивать до первой попытки, используйте этот инструмент MeasureIt . Это блестящее дополнение к Firefox.

Спасибо за ответ Рипона Аль Васима. Я сделал некоторое улучшение. из-за сетевых проблем, я повторяю три раза до прерывания.

 driver.get(url) # Get scroll height last_height = driver.execute_script("return document.body.scrollHeight") try_times = 0 while True: # Scroll down to bottom driver.execute_script("window.scrollBy(0,2000)") # Wait to load page time.sleep(scroll_delay) # Calculate new scroll height and compare with last scroll height new_height = driver.execute_script("return document.body.scrollHeight") if last_height == new_height: try_times += 1 if try_times > 3: try_times = 0 break last_height = new_height 
  • Selenium WebDriver выбрасывает исключение в streamе «main» org.openqa.selenium.ElementNotInteractableException
  • В чем разница между css-selector & Xpath? что лучше (по производительности и для кросс-браузерного тестирования)?
  • Selenium Web Driver и Java. Элемент не кликается в точке (36, 72). Другой элемент получит клик:
  • Как проверить выражение XPath в инструменте разработчиков Chrome или Firebug Firefox?
  • Нужно найти элемент в seleniumе css
  • Как выполнить функцию mouseover в Selenium WebDriver с помощью Java?
  • Как обрабатывать элементы внутри Shadow DOM от Selenium
  • Экран Protractor e2e для загрузки pdf-файла
  • Как обрабатывать всплывающее окно аутентификации с помощью Selenium WebDriver с помощью Java
  • Не удалось запустить браузер IE с помощью Selenium2 (Webdriver) с Java
  • Замените неявное ожидание с явным ожиданием (selenium webdriver & java)
  • Interesting Posts

    Почему только конечные переменные доступны в анонимном classе?

    переносимый способ записи csv-файла в python 2 или python 3

    Как приостановить, а затем возобновить stream?

    java.lang.NoClassDefFoundError: com / sun / mail / util / MailLogger для тестового примера JUnit для Java-почты

    Как запретить Chrome Canary обновлять -OR- Как мне синхронизировать два профиля Chrome с одной учетной записью?

    Что такое регулярное выражение для MAC-адреса?

    Как обновить колонку Identity в SQL Server?

    Windows 8.1 Ошибка Alt-Tab в определенных программах

    Использование json_encode для объектов в PHP (независимо от области действия)

    Основной код метода полностью внутри try / catch: это плохая практика?

    Что такое куча памяти?

    Как добавить изображение в заголовок страницы при печати таблиц Excel 2000?

    В Java, когда я вызываю OutputStream.close (), мне всегда нужно вызывать OutputStream.flush () раньше?

    Настройка перенаправления в файле web.config

    Как я могу выровнять текст в столбцах с помощью Console.WriteLine?

    Давайте будем гением компьютера.