В этой статье я покажу вам, как находить и выбирать элементы на веб-страницах, используя текст в Selenium с библиотекой Selenium python. Итак, приступим.
Предпосылки:
Чтобы опробовать команды и примеры из этой статьи, вам необходимо иметь:
- Дистрибутив Linux (желательно Ubuntu), установленный на вашем компьютере.
- Python 3 установлен на вашем компьютере.
- PIP 3 установлен на вашем компьютере.
- Python virtualenv пакет установлен на вашем компьютере.
- Веб-браузеры Mozilla Firefox или Google Chrome, установленные на вашем компьютере.
- Должен знать, как установить драйвер Firefox Gecko или веб-драйвер Chrome.
Для выполнения требований 4, 5 и 6 прочтите мою статью Введение в Selenium в Python 3.
Вы можете найти множество статей по другим темам на LinuxHint.ком. Обязательно ознакомьтесь с ними, если вам нужна помощь.
Настройка каталога проекта:
Чтобы все было организовано, создайте новый каталог проекта селен-текст-выбор / следующим образом:
$ mkdir -pv селен-текст-выбор / драйверы
Перейдите к селен-текст-выбор / каталог проекта следующим образом:
$ cd селен-текст-выбор /
Создайте виртуальную среду Python в каталоге проекта следующим образом:
$ virtualenv .Venv
Активируйте виртуальную среду следующим образом:
$ источник .Venv / bin / активировать
Установите библиотеку Selenium Python с помощью PIP3 следующим образом:
$ pip3 установить селен
Загрузите и установите все необходимые веб-драйверы в драйверы / каталог проекта. Я объяснил процесс загрузки и установки веб-драйверов в своей статье Введение в Selenium в Python 3.
Поиск элементов по тексту:
В этом разделе я покажу вам несколько примеров поиска и выбора элементов веб-страницы по тексту с помощью библиотеки Selenium Python.
Я собираюсь начать с простейшего примера выбора элементов веб-страницы по тексту, выбора ссылок с веб-страницы.
На странице входа в facebook.com, у нас есть ссылка Забытый аккаунт? Как видно на скриншоте ниже. Выберем эту ссылку с помощью Selenium.
Создайте новый скрипт Python ex01.ру и введите в нем следующие строки кода.
из selenium import webdriverиз селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.общий.по импорту По
от времени импортный сон
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ")
браузер.get ("https: // www.facebook.com / ")
ForgotAccountLink = браузер.find_element (Автор.XPATH, "
// * [text () = 'Забытый аккаунт?'] ")
забылAccountLink.send_keys (Ключи.ВХОДИТЬ)
Как только вы закончите, сохраните ex01.ру Скрипт Python.
Строка 1-4 импортирует все необходимые компоненты в программу Python.
Строка 6 создает Chrome браузер объект, использующий хромированная отвертка двоичный из драйверы / каталог проекта.
Строка 8 сообщает браузеру загрузить сайт facebook.ком.
Строка 10 находит ссылку с текстом Забытый аккаунт? Использование селектора XPath. Для этого я использовал селектор XPath // * [text () = 'Забытый аккаунт?'].
Селектор XPath начинается с //, что означает, что элемент может быть где угодно на странице. В * символ указывает Selenium выбрать любой тег (а или же п или же охватывать, так далее.), которое соответствует условию в квадратных скобках []. Здесь условие: текст элемента равен Забытый аккаунт?
В текст() Функция XPath используется для получения текста элемента.
Например, текст() возвращается Привет мир если он выбирает следующий элемент HTML.
Привет мирСтрока 11 отправляет
Запустите скрипт Python ex01.ру с помощью следующей команды:
$ python ex01.ру
Как видите, веб-браузер находит, выбирает и нажимает
В Забытый аккаунт? Ссылка переводит браузер на следующую страницу.
Таким же образом вы можете легко искать элементы с желаемым значением атрибута.
Здесь Авторизоваться кнопка Вход элемент, который имеет значение атрибут Авторизоваться. Посмотрим, как выделить этот элемент по тексту.
Создайте новый скрипт Python ex02.ру и введите в нем следующие строки кода.
из selenium import webdriverиз селена.webdriver.общий.ключи импорт Ключи
из селена.webdriver.общий.по импорту По
от времени импортный сон
браузер = веб-драйвер.Chrome (исполняемый_путь = "./ drivers / chromedriver ")
браузер.get ("https: // www.facebook.com / ")
сон (5)
emailInput = браузер.find_element (Автор.XPATH, "// ввод [@ id = 'email']")
passwordInput = браузер.find_element (Автор.XPATH, "// ввод [@ id = 'pass']")
loginButton = браузер.find_element (Автор.XPATH, "// * [@ value = 'Log In']")
emailInput.send_keys ('[электронная почта защищена]')
сон (5)
passwordInput.send_keys ('секретный пропуск')
сон (5)
loginButton.send_keys (Ключи.ВХОДИТЬ)
Как только вы закончите, сохраните ex02.ру Скрипт Python.
Строка 1-4 импортирует все необходимые компоненты.
Строка 6 создает Chrome браузер объект, использующий хромированная отвертка двоичный из драйверы / каталог проекта.
Строка 8 сообщает браузеру загрузить веб-сайт facebook.ком.
Все происходит так быстро, как только вы запускаете скрипт. Итак, я использовал спать() функционировать много раз в ex02.ру для задержки команд браузера. Таким образом, вы можете наблюдать, как все работает.
Строка 11 находит текстовое поле ввода электронной почты и сохраняет ссылку на элемент в emailInput Переменная.
Строка 12 находит текстовое поле ввода электронной почты и сохраняет ссылку на элемент в emailInput Переменная.
Строка 13 находит входной элемент с атрибутом значение из Авторизоваться используя селектор XPath. Для этого я использовал селектор XPath // * [@ value = 'Войти'].
Селектор XPath начинается с //. Это означает, что элемент может находиться в любом месте страницы. В * символ указывает Selenium выбрать любой тег (Вход или же п или же охватывать, так далее.), которое соответствует условию в квадратных скобках []. Здесь условием является атрибут элемента значение равно Авторизоваться.
Строка 15 отправляет ввод [электронная почта защищена] в текстовое поле ввода электронной почты, а строка 16 задерживает следующую операцию.
Строка 18 отправляет секретный пароль ввода в текстовое поле ввода пароля, а строка 19 задерживает следующую операцию.
Строка 21 отправляет
Запустить ex02.ру Скрипт Python с помощью следующей команды:
$ python3 ex02.ру
Как видите, текстовые поля электронной почты и пароля заполнены фиктивными значениями, а Авторизоваться кнопка нажата.
Затем страница переходит на следующую страницу.
Поиск элементов по частичному тексту:
В предыдущем разделе я показал вам, как находить элементы по определенному тексту. В этом разделе я покажу вам, как находить элементы на веб-страницах, используя частичный текст.
В примере, ex01.ру, Я искал элемент ссылки с текстом Забытый аккаунт?. Вы можете искать тот же элемент ссылки, используя частичный текст, например Забытый акк. Для этого вы можете использовать содержит() Функция XPath, как показано в строке 10 ex03.ру. Остальные коды такие же, как в ex01.ру. Результаты будут такими же.
В строке 10 из ex03.ру, условие выбора использовало содержит (источник, текст) Функция XPath. Эта функция принимает 2 аргумента, источник, а также текст.
В содержит() функция проверяет, есть ли текст указанный во втором аргументе частично совпадает с источник значение в первом аргументе.
Источником может быть текст элемента (текст()) или значение атрибута элемента (@attr_name).
В ex03.ру, текст элемента проверяется.
Еще одна полезная функция XPath для поиска элементов на веб-странице с использованием частичного текста: начинается с (источник, текст). Эта функция имеет те же аргументы, что и содержит() функция и используется таким же образом. Единственная разница в том, что начинается с() функция проверяет, является ли второй аргумент текст это начальная строка первого аргумента источник.
Я переписал пример ex03.ру для поиска элемента, текст которого начинается с Забытый, как вы можете видеть в строке 10 ex04.ру. Результат такой же, как и в ex02 а также ex03.ру.
Я также переписал ex02.ру так что он ищет элемент ввода, для которого значение атрибут начинается с Бревно, как вы можете видеть в строке 13 ex05.ру. Результат такой же, как и в ex02.ру.
Заключение:
В этой статье я показал вам, как находить и выбирать элементы на веб-страницах по тексту с помощью библиотеки Selenium Python. Теперь вы должны иметь возможность находить элементы на веб-страницах по определенному тексту или части текста с помощью библиотеки Selenium Python.