Как найти элемент и извлечь необходимый текст с помощью Selenium и Python - PullRequest
0 голосов
/ 16 апреля 2019

Я использую Selenium для ввода данных на веб-странице, но столкнулся с проблемой с одним из полей ввода.Вот код HTML, который вызывает у меня трудности:

<div class="form-group">
<label for="address">Enter your address</label>
<input type="text" name="address" class="form-control" value="" style="font-size:1.8em;padding:15px;height:40px">
<label for="address">Enter this code: 2784873 </label>
<input type="text" name="code" class="form-control" value="" style="font-size:1.8em;padding:15px;height:40px">

Я хочу использовать Selenium для копирования числового значения после Enter this code: 2784873 (в данном случае 2784873 ), который я бы затем ввел в поле ввода ниже, но до сих пор не смог понять, как это получить.Я пытался использовать driver.find_element_by_id(), но это не удалось.Я также пытался использовать xpath (который мне кажется лучшим подходом) с:

codes = driver.find_elements(By.XPATH, "//*[@id=\"page-wrapper\"]/div[2]/div[2]/center/form/div/label[2]")

, но значение, возвращаемое в codes:

<selenium.webdriver.remote.webelement.WebElement (session="ae4e91d8ec7e2bc161", element="0.570523580858733-2")

Может кто-нибудь предложить способсделать это?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2019

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

driver.find_element_by_css_selector('.form-control + [for=address]').text

Используйте replace() для удаления строки enter this code:, если требуется

Это селектор класса "."с соседним братским комбинатором, соединяющимся с атрибутом = значение селектора.Таким образом, элемент с атрибутом for имеет значение address, смежный с элементом с классом form-control.

0 голосов
/ 17 апреля 2019

Благодаря подсказке, предложенной glhr выше, я смог понять это. glhr спросил, что показало codes.getText(), но getText() для версии Selenium для Java.В этом случае я использую Python, поэтому он должен быть .text:

codes = driver.find_elements(By.XPATH, "//*[@id=\"page-wrapper\"]/div[2]/div[2]/center/form/div/label[2]").text

, который в приведенном выше примере возвращает «Введите этот код: 2784873».

Проблема решена, спасибо!

Редактировать: Благодаря QHarr , чье решение пришло так же, как я писал это.

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