Как сделать скролл selenium python

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

Автоматизация веб – браузеров набирает популярность, и появилось много фреймворков/инструментов, предлагающих разработчикам услуги автоматизации.

Автоматизация веб-браузера часто используется для тестирования в среде разработки и производства, хотя она также часто используется для веб-очистки данных из открытых источников, анализа и обработки данных.

На самом деле, то, что вы делаете с автоматизацией, зависит только от вас, просто убедитесь, что то, что вы делаете, законно, так как “боты”, созданные с помощью инструментов автоматизации, часто могут нарушать законы или условия обслуживания сайта.

Selenium является одним из широко используемых инструментов, используемых для автоматизации веб-браузера, и предлагает множество функциональных возможностей и возможностей по сравнению с браузером.

Что такое Селен?

Selenium-это отличный инструмент, который позволяет разработчикам имитировать конечных пользователей всего несколькими строками кода. Используя инструменты, которые он предлагает, очень легко использовать веб-страницы и имитировать человека, хотя на самом деле трудно воспроизвести человеческое поведение.

Для борьбы с “ботами”, которые предназначены для репликации людей, используются многие сложные системы для распознавания человекоподобного поведения, которое невозможно воспроизвести с помощью программных средств.

Если вы создаете приложение с помощью Selenium, убедитесь, что вы придерживаетесь всех законов, связанных с автоматизацией веб-браузера, или просто используете его для тестирования в своей собственной производственной среде.

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

  • Щелчок по кнопкам
  • Ввод текста
  • Извлечение текста
  • Доступ к файлам Cookie
  • Нажатие клавиш

Предпосылки

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

    на свой компьютер – мы будем имитировать пользователя в Google Chrome, хотя вы могли бы имитировать и другие браузеры, но для этой статьи я буду использовать Google Chrome.
  • Получить chromedriver.exe , потому что для того, чтобы действительно имитировать браузер, вам понадобится путь к этому исполняемому файлу на вашем компьютере.
  • Установите пакет selenium с помощью pip install selenium в командной строке.

Основы

Хорошо, теперь мы все готовы начать работать с Селеном. Первое, что вам нужно сделать, это запустить браузер:

Здесь важно отметить, что подключение к веб-странице осуществляется с помощью функции get(URL) объекта driver .

Как вы могли заметить, driver является объектом Selenium WebDriver , вы используете его для программного доступа к браузеру, например:

Приведенный выше код выводит исходный HTML – код всей страницы. Если вам нужно собрать данные, это очень полезно.

Локализующие Элементы

Обычно вам нужно не содержимое всей страницы, а конкретные элементы.

Для этого вам сначала нужно определить свою цель на странице, и для этого вы можете использовать инструмент Inspect Element в Google Chrome.

Это означает, что если вам нужно содержимое определенного элемента на странице, то для получения идентификатора тегов вы можете сделать следующее (в обычном сеансе Google Chome):

  • Щелкните правой кнопкой мыши на элементе
  • Выберите “Проверить”
  • А в новом окне вы можете взглянуть на HTML элемента, и идентификатор будет после id= .

Получив нужные нам элементы, мы можем выполнять над ними различные виды операций.

Получение элементов по идентификатору

Если у вас есть точный идентификатор элемента, который вы ищете, его легко получить:

Получение элементов по имени

Аналогично предыдущему подходу:

Получение элементов по классам

И снова аналогично предыдущему подходу:

Получение элементов по тегу HTML

В некоторых случаях вы можете получить все элементы по определенному тегу:

В этом случае links заполняется всеми тегами a , которые теперь содержат каждую ссылку на странице. Это может быть полезно для целей обхода веб-страниц.

Получение элементов с помощью XPath

Не все элементы имеют идентификатор, или, может быть, вы не хотите получать доступ к каждому тегу a HTML. Существуют и другие способы извлечения очень специфического элемента, например XPath , который является еще одним способом извлечения элементов. С помощью XPath вы можете найти элементы более легко и эффективно:

tag_list теперь содержит каждый тег , который имеет и атрибут attr установлен в val :

Теперь вы можете перебирать tag_list и взаимодействовать с каждым Selenium WebElement в нем.

Вы можете прочитать больше о системе XPath в Selenium здесь .

Selenium WebElement

Selenium WebElement практически представляет собой HTML-элемент. Вы можете выполнять операции с этими элементами аналогично тому, как вы делали бы это в качестве конечного пользователя.

Эти операции включают в себя:

  • Доступ к простым свойствам элемента, таким как текст внутри ( element.text )
  • Доступ к родительским элементам, которые также имеют тип WebElement ( element.parent )
  • Доступ к определенным атрибутам, таким как href тега a ( element.get_attribute('href') )
  • Поиск внутри него (так же, как вы бы искали в драйвере )
  • Щелчок по нему ( element.click() )
  • Ввод текста, если это возможно ( element.send_keys('Input Text') )

Selenium WebDriver

WebDriver похож на WebElement , однако основное отличие заключается в их области применения. Область действия последнего-это сам элемент, тогда как область действия первого-вся страница.

Вы также можете делать много вещей с объектом Selenium WebDriver , практически все, что вы могли бы сделать как человек с обычным браузером.

Некоторые другие очень полезные вещи:

  • Выполнение JavaScript: driver.execute_script("script")
  • Сохранение скриншота: driver.save_screenshot('image.jpg')
  • Запуск в “безголовом режиме”, где браузер экономит время, не отображая страницу:

Обратите внимание, что размер окна установлен на (1440, 900) , это делается для того, чтобы предотвратить всевозможные ошибки, связанные с тем, что некоторые элементы не загружаются должным образом из-за безголового режима.

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

Навигация по странице

Доступ к файлам Cookie

Возможно, вам понадобится добавить или удалить файлы cookie браузера :

Это добавляет файл cookie в браузер, который может быть полезен, например, если вам нужно добавить файлы cookie аутентификации или предпочтений. Важно убедиться, что файл cookie находится в формате dict .

Кроме того, очень легко получить файлы cookie из браузера:

Приведенный выше код печатает каждый файл cookie в браузере.

Изменение HTML-кода

Иногда вы можете обнаружить, что нуждаетесь в изменении определенного свойства элементов.

Как уже упоминалось ранее, вы можете использовать Selenium WebDriver для выполнения JavaScript, и изменение свойств элементов просто так очень легко сделать с помощью JavaScript:

Здесь element – это элемент, который нужно изменить, attr – это атрибут, который нужно изменить, а value – это новое значение.

Загрузка файлов с помощью ссылок для скачивания

Иногда вам может понадобиться загрузить файл с веб-сайта:

Вы можете указать путь к месту сохранения , определив download.default_directory , например path\to\directory .

Нажатие Клавиш

Если мы просто запустим несколько команд, они могут потеряться в процессе и фактически не будут регистрироваться.

Keys содержит все клавиши на клавиатуре, что означает, что вы также можете использовать этот метод для tab ( Keys.TAB ) между элементами на странице, облегчающими взаимодействие с ней ( Клавиши.ВЕРНИТЕ и Ключи.ПРОСТРАНСТВО также очень важно).

Щелчок по кнопкам

Обратите внимание, что вы можете использовать нажатия клавиш для перемещения между элементами страницы, например, вы можете использовать вкладки и пробелы для заполнения флажков, а также использовать клавиши со стрелками для перемещения между пунктами выпадающего меню.

Конечно, более естественным способом выбора флажков и выпадающих элементов было бы просто получить элемент с помощью драйвера и щелкнуть по нему:

Ввод форм

Вы также можете имитировать нажатия клавиш внутри самих элементов:

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

Кстати, этот код использует комбинацию клавиш (CTRL + A) для выделения всего текста внутри элемента. Следующая строка заменяет выделенный текст введенным значением .

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

Прокрутка

Иногда части страницы загружаются только после прокрутки вниз (например, лента Instagram или любая другая страница с бесконечной прокруткой). Это можно легко сделать, выполнив простой JavaScript-скрипт:

Приведенный выше код использует команду JavaScript для прокрутки вниз страницы, теперь вы можете снова использовать driver.page_source и получить новый контент.

Вывод

Selenium-это один из широко используемых инструментов автоматизации веб-браузеров, который предлагает множество функций и возможностей по сравнению с браузером, управляемым человеком.

Он в основном используется для тестирования/автоматизации производственной или интеграционной среды, хотя также может использоваться в качестве веб-скребка для исследовательских целей и т. Д. Обязательно соблюдайте все законы, когда вы практикуете веб-скребок публичного контента, чтобы не нарушать никаких законов.

How can I scroll a web page using selenium webdriver in python?

Sometimes we need to perform action on an element which is not present in the viewable area of the page. We need to scroll down to the page in order to reach that element.

Selenium cannot perform scrolling action directly. This can be achieved with the help of Javascript Executor and Actions class in Selenium. DOM can work on all elements on the web page with the help of Javascript.

Selenium can execute commands in Javascript with the help of the execute_script() method. For the Javascript solution, we have to pass true value to the method scrollIntoView() to identify the object below our current location on the page. We can execute mouse movement with the help of the Actions class in Selenium.

Example

Code Implementation with Javascript Executor.

While working with Actions class to scroll to view, we have to use the moveToElement() method. This method shall perform mouse movement till the middle of the element.

Как я могу прокручивать веб-страницу с помощью selenium webdriver в Python?

В настоящее время я использую selenium webdriver для анализа страницы друзей пользователей facebook и извлечения всех идентификаторов из сценария AJAX. Но мне нужно прокрутить вниз, чтобы найти всех друзей. Как я могу прокрутить вниз в Selenium. Я использую питон.

Ты можешь использовать

где Y — высота (на fullhd мониторе 1080). (Спасибо @lukeis)

Вы также можете использовать

для прокрутки вниз страницы.

Если вы хотите перейти на страницу с бесконечной загрузкой , например, в социальных сетях, facebook и т. Д. (Спасибо @Cuong Tran)

Другой метод (спасибо Хуансу) — выбрать объект и

Вы можете использовать send_keys для имитации нажатия клавиши END (или PAGE_DOWN ) (которое обычно прокручивает страницу):

тот же метод, что и здесь :

в Python вы можете просто использовать

(Y — вертикальное положение, до которого нужно прокрутить)

Для моей цели я хотел больше прокручивать вниз, не забывая о положении окон. Мое решение было похожим и использовалось window.scrollY

который перейдет в текущую позицию прокрутки y + 200

Вот как вы прокручиваете страницу вниз:

Надеюсь, что это работает!

Я искал способ прокрутки динамической веб-страницы и автоматической остановки при достижении конца страницы, и нашел этот поток.

Модификация заключается в перемещении оператора, который фиксирует высоту последней страницы внутри цикла (так, чтобы каждая проверка сравнивалась с высотой предыдущей страницы).

Непрерывно прокручивает динамическую веб-страницу ( .scrollTo() ), останавливаясь только тогда, когда для одной итерации высота страницы остается прежней.

Selenium Scroll Down Webpage

Do you want the Web Browser to scroll to the end of the page while using Python Selenium?

You can do that with code, the trick is to inject Javascript code to be webpage. After you load a webpage, scroll down the page by injecting javascript.You can scroll down a specific amount or all the way to the bottom.

Related course:

Scroll down webpage

Example

Before you start make sure the Selenium Web Driver is installed and that you have the selenium module installed. The web driver must be the appropriate web driver for the browser (same version). For Firefox that’s the geckoDriver, for Chrome that’s the ChromeDriver. The version of the driver must be intended for the browser version, an outdated version most likely wont work.

The selenium scroll down code is shown below. It cals the method execute_script() with the javascript to scroll to the end of the web page.

selenium scroll down

First the required modules are loaded. You’ll need the selenium module and the time module.

Then initialize the web browser. This can be Firefox or another supported browser (Chrome, Edge, Safari)

Get your webpage wit the get() method, which has a parameter the URL to load.

Автоматизация веб-браузера набирает популярность, и появилось множество фреймворков и инструментов, предлагающих разработчикам услуги автоматизации.

Автоматизация веб-браузера часто используется для целей тестирования в средах разработки и производства, хотя она также часто используется для сбора данных из общедоступных источников, анализа и обработки данных.

Selenium – один из широко используемых инструментов, используемых для автоматизации веб-браузера, который предлагает множество функций и возможностей по сравнению с браузером.

Что такое Selenium?

Selenium – отличный инструмент, который позволяет разработчикам моделировать конечных пользователей всего несколькими строками кода. Используя предлагаемые инструменты, очень легко использовать веб-страницы и имитировать человека, хотя по-настоящему воспроизвести человеческое поведение сложно.

Если вы создаете приложение с помощью Selenium, убедитесь, что вы соблюдаете все законы, связанные с автоматизацией веб-браузера, или просто используйте его для целей тестирования в своей собственной производственной среде.

Предпосылки

  • Установите Google Chrome на свой компьютер – мы будем моделировать пользователя в Google Chrome, хотя вы можете моделировать другие браузеры, но в этой статье я буду использовать Google Chrome.
  • Загрузите chromedriver.exe, потому что для имитации браузера вам понадобится путь к этому исполняемому файлу на вашем компьютере.
  • Установите пакет selenium с помощью команды pip install selenium в командной строке.

Основы

Хорошо, теперь мы готовы начать работу с Selenium. Первое, что вам нужно сделать, это запустить браузер:

Здесь важно отметить, что подключение к веб-странице осуществляется с помощью функции get (URL) объекта драйвера.

Как вы могли заметить, драйвером является объект Selenium WebDriver, вы используете его для программного доступа к браузеру, например:

Приведенный выше код печатает исходный HTML-код всей страницы. Если вам нужно собрать данные, это очень полезно.

Расположение элементов

Обычно вам нужно не содержимое всей страницы, а конкретные элементы.

Для этого вам сначала нужно обнаружить свою цель на странице, и для этого вы можете использовать инструмент Inspect Element в Google Chrome.

Получение элементов по идентификатору

Если у вас есть точный идентификатор искомого элемента, его легко получить:

Получение элементов по имени

Аналогично предыдущему подходу:

Получение элементов по классам

И снова аналогично предыдущему подходу:

По тегу HTML

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

В этом случае ссылки заполняются всеми тегами, которые теперь содержат каждую ссылку на странице. Это может быть полезно для сканирования в Интернете.

С помощью XPath

Не все элементы имеют идентификатор, или, может быть, вы не хотите получать доступ ко всем тегам HTML. Есть и другие способы получить очень специфический элемент, например XPath, который является еще одним способом получения элементов. С XPath вы можете легче и эффективнее находить элементы:

tag_list теперь содержит каждый тег, для которого атрибут attr установлен в значение val:

Теперь вы можете перебирать tag_list и взаимодействовать с каждым Selenium WebElement в нем.

WebElement

Selenium WebElement практически представляет собой HTML-элемент. Вы можете выполнять операции с этими элементами так же, как и конечный пользователь.

  • Доступ к простым свойствам элемента, таким как текст внутри (element.text).
  • Доступ к родительским элементам, которые также относятся к типу WebElement (element.parent).
  • Доступ к определенным атрибутам, таким как href тега (element.get_attribute (‘href’)).
  • Поиск в нем (так же, как в драйвере).
  • Щелкнув по нему (element.click()).
  • Если возможно, введите текст (element.send_keys (‘Input Text’)).

WebDriver

WebDriver похож на WebElement, однако основное отличие заключается в их объеме. Область действия последнего – это сам элемент, а область действия первого – вся страница.

С помощью объекта Selenium WebDriver вы также можете делать множество вещей, практически все, что вы могли бы делать, как человек с обычным браузером.

Обратите внимание, что размер окна установлен на (1440, 900), то есть для предотвращения всевозможных ошибок, связанных с неправильной загрузкой некоторых элементов из-за режима без заголовка.

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

Навигация по странице

Доступ к файлам cookie

Возможно, вам понадобится добавить или удалить файлы cookie браузера:

При этом в браузер добавляется файл cookie, который может быть полезен, например, если вам нужно добавить файлы cookie аутентификации или предпочтения. Важно убедиться, что файл cookie имеет формат dict.

Также очень легко получить файлы cookie из браузера:

Приведенный выше код печатает каждый файл cookie в браузере.

Изменение HTML

Иногда вам может понадобиться изменить свойство элемента cerain.

Как упоминалось ранее, вы можете использовать Selenium WebDriver для выполнения JavaScript, и изменение свойств элементов настолько удачно, что это очень легко сделать с помощью JavaScript:

Здесь element – это элемент, который нужно изменить, attr – это атрибут, который нужно изменить, а value – это новое значение.

Загрузка файлов с помощью ссылок для скачивания

Иногда может потребоваться скачать файл с веб-сайта:

Вы можете указать путь к месту сохранения, указав download.default_directory, например path\to\directory.

Нажатие клавиш

Если мы просто запустим несколько команд, они могут потеряться в процессе и фактически не будут регистрироваться.

Ключи содержат все клавиши на клавиатуре, а это означает, что вы также можете использовать этот метод для табуляции (Keys.TAB) между элементами на странице, что упрощает взаимодействие с ними (также очень важны Keys.RETURN и Keys.SPACE. ).

Нажатие кнопок

Обратите внимание, что вы можете использовать нажатия клавиш для перехода между элементами на странице, например, вы можете использовать табуляции и пробелы для заполнения флажков и использовать клавиши со стрелками для перехода между элементами раскрывающегося меню.

Конечно, более естественным способом установки флажков и раскрывающихся элементов было бы просто извлечь элемент с помощью драйвера и щелкнуть по нему:

Формы ввода

Вы также можете имитировать нажатия клавиш внутри самих элементов:

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

Кстати, этот код использует сочетание клавиш (CTRL + A) для выделения всего текста внутри элемента. Следующая строка заменяет выделенный текст введенным значением.

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

Прокрутка

Иногда части страницы загружаются только после прокрутки вниз (например, лента Instagram или любая другая страница с бесконечной прокруткой). Это легко сделать, выполнив простой скрипт JavaScript:

В приведенном выше коде используется команда JavaScript для прокрутки страницы вниз, теперь вы можете снова использовать driver.page_source и получить новый контент.

Заключение

Selenium – один из широко используемых инструментов, используемых для автоматизации веб-браузера, который предлагает множество функций и возможностей по сравнению с браузером, управляемым человеком.

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

Это потому, что селен не может нажимать на ссылки, которых нет в области просмотра? Нам больше не нужно этого делать.

Ответы 2

Вы можете перейти к элементу класса copyright внизу, используя actions.move_to_element

Вы можете изменить это, например, сказать, что вы хотели перейти к последнему продукту:

Спасибо, сэр! Как я могу последовательно переходить ко всем элементам с помощью селектора "product-list__item-image" . Я могу перейти к первому, но не могу перейти к следующему.

Другие вопросы по теме

Похожие вопросы

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

Читайте также: