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

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

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

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

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

 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 
  • Страtagsя загрузки страницы для драйвера Chrome (обновлено до Selenium v3.12.0)
  • ChromeDriver - отключить расширения режима разработки для Selenium WebDriver
  • Как разрешить ElementNotInteractableException в Selenium webdriver?
  • Разница между webdriver.get () и webdriver.navigate ()
  • В чем разница между css-selector & Xpath? что лучше (по производительности и для кросс-браузерного тестирования)?
  • Как читать текст из скрытого элемента с помощью Selenium WebDriver?
  • Обработка предупреждений в Selenium WebDriver (selenium 2) с Java
  • Экран Protractor e2e для загрузки pdf-файла
  • Как захватить снимок экрана определенного элемента, а не всей страницы, используя Selenium Webdriver?
  • Использование неявного ожидания в seleniumе
  • WebDriver: проверьте, существует ли элемент?
  • Interesting Posts

    Установка Windows XP не распознает жесткий диск нетбука

    Запуск двух асинхронных задач параллельно и сбор результатов в .NET 4.5

    Создание текстового файла с использованием пользовательского ввода из пакетного файла

    Какой смысл жестких дисков сообщать о размере их физического сектора?

    Разрешения для файлов «Администраторы: полный доступ». Почему этого не всегда достаточно?

    Точная разница между CharSequence и String в java

    Как использовать код Powershell для перебора подкаталогов и удаления определенных папок?

    Вывод признака приводит к непредвиденной ошибке компилятора, но ручная реализация

    Доступ к идентификатору / имени пользователя учетной записи Google через Android

    OpenVPN для доступа к VPN моей компании

    Область статической переменной в многопользовательском веб-приложении ASP.NET

    Как установить: OpenSSL + WAMP

    Ссылка на Schema.org JSON-LD

    Какая лучшая среда разработки для разработки приложений для Android?

    Где находится диск C в WSL?

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