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

How Find Element Text With Selenium



Поиск и выбор элементов на веб-странице - ключ к парсингу веб-страниц с помощью Selenium. Вы можете выбирать элементы, используя имя тега, идентификатор, имя класса, селектор XPath, селектор CSS и т. Д. В Selenium. Вы также можете выбрать элементы с определенным текстом с помощью 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.com . Обязательно ознакомьтесь с ними, если вам понадобится помощь.





Настройка каталога проекта:

Чтобы все было организовано, создайте новый каталог проекта селен-текст-выбор / следующее:

$mkdir -pvселен-текст-выбор/водители



Перейдите к селен-текст-выбор / каталог проекта следующим образом:

$CDселен-текст-выбор/

Создайте виртуальную среду Python в каталоге проекта следующим образом:

$virtualenv .venv

Активируйте виртуальную среду следующим образом:

$источник.venv/являюсь/активировать

Установите библиотеку Selenium Python с помощью PIP3 следующим образом:

$ pip3 установить селен

Загрузите и установите все необходимые веб-драйверы в драйверы / каталог проекта. Я объяснил процесс загрузки и установки веб-драйверов в своей статье. Введение в Selenium в Python 3 .

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

В этом разделе я собираюсь показать вам несколько примеров поиска и выбора элементов веб-страницы по тексту с помощью библиотеки Selenium Python.

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

На странице входа на facebook.com у нас есть ссылка Забытый аккаунт? Как вы можете видеть на скриншоте ниже. Выберем эту ссылку с помощью Selenium.

Создайте новый скрипт Python ex01.py и введите в него следующие строки кодов.

изселенИмпортироватьwebdriver
изселен.webdriver.общий.ключи ИмпортироватьКлючи
изселен.webdriver.общий.к ИмпортироватьК
из время Импортироватьспать
браузерзнак равноwebdriver.Хром(исполняемый_путьзнак равно'./drivers/chromedriver')
браузер.получать('https://www.facebook.com/')
забылAccountLinkзнак равнобраузер.find_element(К.XPATH, '
// * [text () = 'Забыли аккаунт?'] '
)
забылAccountLink.send_keys(Ключи.ВХОДИТЬ)

Как только вы закончите, сохраните ex01.py Скрипт Python.

Строка 1-4 импортирует все необходимые компоненты в программу Python.

Строка 6 создает Chrome браузер объект, использующий хромированная отвертка двоичный из драйверы / каталог проекта.

Строка 8 указывает браузеру загрузить сайт facebook.com.

Строка 10 находит ссылку с текстом Забытый аккаунт? Использование селектора XPath. Для этого я использовал селектор XPath // * [text () = ’Забыли аккаунт?’] .

Селектор XPath начинается с //, что означает, что элемент может быть где угодно на странице. В * символ указывает Selenium выбрать любой тег ( к или п или охватывать, и т. д.), которое соответствует условию в квадратных скобках [] . Здесь условие: текст элемента равен Забытый аккаунт?

В текст() Функция XPath используется для получения текста элемента.

Например, текст() возвращается Привет, мир если он выбирает следующий элемент HTML.

< к hrefзнак равно'http://dummysite.com'>Привет, мир</ к >

Строка 11 отправляет нажмите клавишу для Забытый аккаунт? Ссылка.

Запустите скрипт Python ex01.py с помощью следующей команды:

$ python ex01.ру

Как видите, веб-браузер находит, выбирает и нажимает ключ на Забытый аккаунт? Ссылка.

В Забытый аккаунт? Ссылка переводит браузер на следующую страницу.

Таким же образом вы можете легко найти элементы с желаемым значением атрибута.

Здесь Авторизоваться кнопка Вход элемент, который имеет ценить атрибут Авторизоваться . Давайте посмотрим, как выделить этот элемент по тексту.

Создайте новый скрипт Python ex02.py и введите в него следующие строки кодов.

изселенИмпортироватьwebdriver
изселен.webdriver.общий.ключи ИмпортироватьКлючи
изселен.webdriver.общий.к ИмпортироватьК
из время Импортироватьспать
браузерзнак равноwebdriver.Хром(исполняемый_путьзнак равно'./drivers/chromedriver')
браузер.получать('https://www.facebook.com/')
спать(5)
emailInputзнак равнобраузер.find_element(К.XPATH, '// ввод [@ id =' email ']')
passwordInputзнак равнобраузер.find_element(К.XPATH, '// ввод [@ id =' pass ']')
loginButtonзнак равнобраузер.find_element(К.XPATH, '// * [@ value =' Войти ']')
emailInput.send_keys('[электронная почта защищена]')
спать(5)
passwordInput.send_keys('секретный пропуск')
спать(5)
loginButton.send_keys(Ключи.ВХОДИТЬ)

Как только вы закончите, сохраните ex02.py Скрипт Python.

Строка 1-4 импортирует все необходимые компоненты.

Строка 6 создает Chrome браузер объект, использующий хромированная отвертка двоичный из драйверы / каталог проекта.

Строка 8 указывает браузеру загрузить сайт facebook.com.

Все происходит так быстро, как только вы запускаете скрипт. Итак, я использовал спать() функционировать много раз в ex02.py для задержки команд браузера. Таким образом, вы можете наблюдать, как все работает.

Строка 11 находит текстовое поле ввода электронной почты и сохраняет ссылку на элемент в emailInput Переменная.

Строка 12 находит текстовое поле ввода электронной почты и сохраняет ссылку на элемент в emailInput Переменная.

Строка 13 находит входной элемент с атрибутом ценить из Авторизоваться используя селектор XPath. Для этого я использовал селектор XPath // * [@ value = ’Log In’] .

Селектор XPath начинается с // . Это означает, что элемент может быть где угодно на странице. В * символ указывает Selenium выбрать любой тег ( Вход или п или охватывать, и т. д.), которое соответствует условию в квадратных скобках [] . Здесь условием является атрибут элемента ценить равно Авторизоваться .

Строка 15 отправляет ввод[электронная почта защищена]в текстовое поле ввода электронной почты, а строка 16 откладывает следующую операцию.

Строка 18 отправляет секретный проход ввода в текстовое поле ввода пароля, а строка 19 задерживает следующую операцию.

Строка 21 отправляет нажмите клавишу для кнопки входа в систему.

Запустить ex02.py Скрипт Python с помощью следующей команды:

$ python3 ex02.ру

Как видите, текстовые поля электронной почты и пароля заполнены фиктивными значениями, а Авторизоваться кнопка нажата.

Затем страница переходит на следующую страницу.

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

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

В этом примере ex01.py , Я искал элемент ссылки с текстом Забытый аккаунт? . Вы можете искать тот же элемент ссылки, используя частичный текст, например Забытый акк . Для этого вы можете использовать содержит() Функция XPath, как показано в строке 10 ex03.py . Остальные коды такие же, как в ex01.py . Результаты будут такими же.

В строке 10 из ex03.py , условие выбора использовало содержит (источник, текст) Функция XPath. Эта функция принимает 2 аргумента, источник, а также текст .

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

Источником может быть текст элемента ( текст() ) или значение атрибута элемента ( @attr_name ).

В ex03.py , проверяется текст элемента.

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

Я переписал пример ex03.py для поиска элемента, текст которого начинается с Забытый, как вы можете видеть в строке 10 ex04.py . Результат такой же, как и в ex02 а также ex03.py .

Я также переписал ex02.py так что он ищет элемент ввода, для которого ценить атрибут начинается с Бревно, как вы можете видеть в строке 13 ex05.py . Результат такой же, как и в ex02.py .

Заключение:

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