Перейти к содержимому

Фотография

Не могу получить данные из инпута через getText();

protractor js e2e

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 7

#1 Markodius

Markodius

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 13 апреля 2019 - 11:40

Суть проблемы в том. 
На странице есть поле для ввода названия интрумента и его параметров. Мне по тесту необходимо:
1) Ввести имя и его параметры.
2) Перейти на саму страницу результатов
3) На страницу результатов нажать на кнопку "Повторить с такими же параметрами"
4) После чего я обратно возвращаюсь на страницу для ввода имени и выбора параматров и поле имя и все параметры предзаполнены уже предыдущими.
5) Мне нужно убедится что все эти поля предзаполнились коретными данными.
Вот только возникла проблема я не могу никак вытянуть значение которое находится в инпуте так как в HTML оно не передается.
Вот как реализован этот инпут
 


<div class="form__group success has-feedback">
 <input class="form__control white in-sidebar no-border-top border-bottom border-bottom--gray ng-dirty ng-valid-parse ng-touched ng-not-empty ng-valid ng-valid-required" name="backtestName" ng-model="$ctrl.model.BacktestParameters.Name" placeholder="New Backtest" required="">
<span class="fa fa-check form-control-feedback"></span>
</div>

А по факту в нем есть текст.

Но вытянуть его с помощью getText() не выходит. Только начинаю вникать в автоматизацию, строго не судите.
 

Прикрепленные файлы


  • 0

#2 aleksey_p

aleksey_p

    Активный участник

  • Members
  • PipPip
  • 107 сообщений
  • ФИО:Алексей

Отправлено 15 апреля 2019 - 06:47

Писал на калькуляторе, а в чем ошибка у вас?

System.out.println(driver.findElement(By.name("backtestName")).getText());

Проверка

driver.findElement(By.name("backtestName")).getText().equals("Значениеполя");

  • 0

#3 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 15 апреля 2019 - 10:07

Скорее всего, нужен не getText(), а getValue().


  • 0

#4 Markodius

Markodius

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 16 апреля 2019 - 07:25

 

Писал на калькуляторе, а в чем ошибка у вас?

System.out.println(driver.findElement(By.name("backtestName")).getText());

Проверка

driver.findElement(By.name("backtestName")).getText().equals("Значениеполя");

getText() не захватывает этот текст так как его нет в ДОМ дереве(.
 

AssertionError [ERR_ASSERTION]: 'autotest_backtest_2019.4.16-10:23:42771' == ''

  • 0

#5 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 18 апреля 2019 - 07:59

В куске кода выше, нет ни текста, ни value у <input>. Поэтому очень сложно подсказать.


  • 0

#6 checo

checo

    Опытный участник

  • Members
  • PipPipPipPip
  • 400 сообщений
  • Город:Н.Новгород

Отправлено 18 апреля 2019 - 10:01

Забавно, в Python прекрасно работает вот это:

from selenium.webdriver import Chrome

d = Chrome()
d.get('http://software-testing.ru/forum/index.php?/topic/37942-ne-mogu-poluchit-dannye-iz-inputa-cherez-gettext/')
main_search = d.find_element_by_id('main_search')
main_search.send_keys('12345')
print('Value=' + main_search.get_property('value')) # Value=12345
d.quit()

А в Java реализии аналогичной команды в интерфейсе WebElement не нашел. Хотя до сих пор думал, что реализация на Java наиболее полная.

 

(Поправочка: get_attribute тоже работает. Это при том, что атрибут в DOM изначально не задан.)


Сообщение отредактировал checo: 18 апреля 2019 - 10:04

  • 0

#7 Markodius

Markodius

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 19 апреля 2019 - 10:40

В куске кода выше, нет ни текста, ни value у <input>. Поэтому очень сложно подсказать.

Вот поэтому и не могу придумать как оттуда текст вытягивать, раз он не попадает в ДОМ.


  • 0

#8 Markodius

Markodius

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 19 апреля 2019 - 11:27

Всем спасибо. Немного гугления и ваших подсказок которые помогли покопать нужном направлении. И я нашел выход.
Данные вытянут ьполучается теперь можно закончить написание теста.

element(by.xpath(pageBacktestCreate.input.input_newBacktest)).getAttribute('value').then(function (value) {
            console.log("Name = ", value);
        });


  • 0



Темы с аналогичным тегами protractor, js, e2e

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных