Как прокрутить страницу вниз или вверх в Selenium Вебдрайвер
Прокрутите Selenium
Для прокрутки с помощью Selenium, вы можете использовать JavaИнтерфейс ScriptExecutor, который помогает выполнить JavaМетоды скрипта через Selenium Вебдрайвер
Синтаксис:
JavascriptExecutor js = (JavascriptExecutor) driver; js.executeScript(Script,Arguments);
- Скрипт – это JavaСкрипт, который необходимо выполнить.
- Аргументы – это аргументы сценария. Это необязательно.
Selenium Скрипт для прокрутки страницы вниз
Давайте рассмотрим прокрутку веб-страницы с помощью веб-драйвера Selenium по следующим 4 сценариям:
- Сценарий 1. Прокрутка веб-страницы вниз по пикселям.
- Сценарий 2. Прокрутка веб-страницы вниз по видимости элемента.
- Сценарий 3. Прокрутка веб-страницы вниз в нижней части страницы.
- Сценарий 4. Горизонтальная прокрутка веб-страницы.
Сценарий 1. Прокрутка веб-страницы вниз по пикселям.
Selenium Сценарий
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class ScrollByPixel { WebDriver driver; @Test public void ByPixel() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("https://demo.guru99.com/test/guru99home/"); //To maximize the window. This code may not work with Selenium 3 jars. If script fails you can remove the line below driver.manage().window().maximize(); // This will scroll down the page by 1000 pixel vertical js.executeScript("window.scrollBy(0,1000)"); } }
Сценарий Descriptион: В приведенном выше коде сначала мы запускаем указанный URL-адрес в браузере Chrome. Далее прокрутите страницу на 1000 пикселей через ExecuteScript. Javascript Метод ScrollBy() прокручивает веб-страницу до определенного количества пикселей.
Синтаксис методов ScrollBy():
executeScript("window.scrollBy(x-pixels,y-pixels)");
x-пиксели — это число по оси X, оно перемещается влево, если число положительное, и вправо, если число отрицательное. Y-пиксели — это число по оси Y, оно перемещается вниз, если число равно положительный, и он движется вверх, если число отрицательное.
Пример:
js.executeScript("window.scrollBy(0,1000)"); //Scroll vertically down by 1000 pixels
Выходной анализ: Вот результат выполнения приведенного выше сценария.
Сценарий 2. Прокрутка веб-страницы вниз по видимости элемента.
Selenium Сценарий
import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class ScrollByVisibleElement { WebDriver driver; @Test public void ByVisibleElement() { System.setProperty("webdriver.chrome.driver", "G://chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; //Launch the application driver.get("https://demo.guru99.com/test/guru99home/"); //Find element by link text and store in variable "Element" WebElement Element = driver.findElement(By.linkText("Linux")); //This will scroll the page till the element is found js.executeScript("arguments[0].scrollIntoView();", Element); } }
Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Затем прокрутите страницу до тех пор, пока упомянутый элемент не будет виден на текущей странице. Javascript метод ScrollIntoView() прокручивает страницу до тех пор, пока упомянутый элемент не окажется на виду:
js.executeScript("arguments[0].scrollIntoView();",Element );
«arguments[0]» означает первый индекс страницы, начинающийся с 0.
Где «Элемент» — это указатель на веб-странице.
Выходной анализ: Вот результат выполнения приведенного выше сценария.
Сценарий 3. Прокрутка веб-страницы вниз в нижней части страницы.
Selenium Сценарий
import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class ScrollByPage { WebDriver driver; @Test public void ByPage() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("https://demo.guru99.com/test/guru99home/"); //This will scroll the web page till end. js.executeScript("window.scrollTo(0, document.body.scrollHeight)"); } }
Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Далее прокрутите страницу до конца. Javascript Метод ScrollTo() прокручивает страницу до конца.
js.executeScript("window.scrollTo(0, document.body.scrollHeight)");
«document.body.scrollHeight» возвращает полную высоту тела, то есть веб-страницы.
Анализ результатов: Вот результат выполнения приведенного выше сценария.
Сценарий 4. Горизонтальная прокрутка веб-страницы.
Selenium Сценарий
import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; public class HorizontalScroll { WebDriver driver; @Test public void ScrollHorizontally() { System.setProperty("webdriver.chrome.driver", "E://Selenium//Selenium_Jars//chromedriver.exe"); driver = new ChromeDriver(); JavascriptExecutor js = (JavascriptExecutor) driver; // Launch the application driver.get("https://demo.guru99.com/test/guru99home/scrolling.html"); WebElement Element = driver.findElement(By.linkText("VBScript")); //This will scroll the page Horizontally till the element is found js.executeScript("arguments[0].scrollIntoView();", Element); } }
Сценарий Descriptион: В приведенном выше коде мы сначала запускаем указанный URL-адрес в браузере Chrome. Затем прокрутите страницу по горизонтали, пока упомянутый элемент не будет виден на текущей странице. Javascript метод ScrollIntoView() прокручивает страницу до тех пор, пока упомянутый элемент не окажется на виду:
js.executeScript("arguments[0].scrollIntoView();",Element );
Анализ результатов: Вот результат выполнения приведенного выше сценария.
Узнать больше о JavaScriptExecutor
Что такое полоса прокрутки?
Полоса прокрутки позволяет перемещаться по экрану в горизонтальном или вертикальном направлении, если текущая прокрутка страницы не соответствует видимой области экрана. Используется для перемещения окна вверх и вниз.
Selenium Webdriver не требует прокрутки для выполнения действий, поскольку он манипулирует DOM. Но на некоторых веб-страницах элементы становятся видимыми только после того, как пользователь прокрутит их. В таких случаях может потребоваться прокрутка.
Полоса прокрутки бывает двух типов: горизонтальный и вертикальный полоса прокрутки, как показано на снимке экрана ниже.
Резюме
- В приведенном выше уроке мы иллюстрируем прокрутку веб-страницы в различных сценариях.
- В первом сценарии мы показали попиксельную прокрутку вниз.
- Во втором сценарии мы показали прокрутку страницы вниз до тех пор, пока элемент не станет видимым.
- В третьем сценарии мы показали прокрутку страницы вниз внизу страницы.
- В четвертом сценарии проиллюстрирована горизонтальная прокрутка веб-страницы.