Селен

Как найти элемент по тексту с помощью Selenium

Как найти элемент по тексту с помощью Selenium
Поиск и выбор элементов на веб-странице - ключ к парсингу веб-страниц с помощью Selenium. Вы можете выбирать элементы, используя имя тега, идентификатор, имя класса, селектор XPath, селектор CSS и т. Д. в селене. Вы также можете выбрать элементы с определенным текстом с помощью Selenium. Это помогает легко выбирать ссылки и кнопки на веб-странице. Даже если структура страницы изменится, пока текст элемента веб-страницы остается неизменным, ваш селектор должен работать нормально. В этом преимущество выбора ссылок и кнопок с помощью текста в Selenium.

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

Предпосылки:

Чтобы опробовать команды и примеры из этой статьи, вам необходимо иметь:

  1. Дистрибутив Linux (желательно Ubuntu), установленный на вашем компьютере.
  2. Python 3 установлен на вашем компьютере.
  3. PIP 3 установлен на вашем компьютере.
  4. Python virtualenv пакет установлен на вашем компьютере.
  5. Веб-браузеры Mozilla Firefox или Google Chrome, установленные на вашем компьютере.
  6. Должен знать, как установить драйвер 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.

Обзор беспроводной мыши Microsoft Sculpt Touch
Я недавно прочитал о Microsoft Sculpt Touch беспроводная мышь и решил ее купить. Побывав некоторое время, я решил поделиться своим опытом с ним. Эта б...
Экранный трекпад и указатель мыши AppyMouse для планшетов с Windows
Пользователи планшетов часто пропускают указатель мыши, особенно когда они привыкли пользоваться ноутбуками. Смартфоны и планшеты с сенсорным экраном ...
Средняя кнопка мыши не работает в Windows 10
В средняя кнопка мыши помогает пролистывать длинные веб-страницы и экраны с большим объемом данных. Если это прекратится, вы в конечном итоге будете и...