В этой статье я покажу вам, как находить и выбирать элементы на веб-страницах, используя текст в 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.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.