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

Фотография

Как вытащить значение селектора?

selector

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

#1 Argem

Argem

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

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


Отправлено 25 февраля 2015 - 16:05

Определяю элементы следующим образом:

    @FindBy(xpath="//input[@type='text']")
    private WebElement input;

 

 

Необходимо у элемента input вытащить значение "//input[@type='text']"

 

Как это  сделать? Видно  что  у этого  объекта это значение лежит в :

input/Inherited/h/locator/by/xpathExpression

Но вытащить  мне его не удалось,  как это  сделать?(Java)


  • 0

#2 Snap

Snap

    Специалист

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


Отправлено 25 февраля 2015 - 17:53

 

 

Необходимо у элемента input вытащить значение "//input[@type='text']"

Что значит вытащить значение? То есть чему равен путь?


Сообщение отредактировал Snap: 25 февраля 2015 - 17:54

  • 0

#3 Argem

Argem

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

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


Отправлено 25 февраля 2015 - 22:13

 

 

 

Необходимо у элемента input вытащить значение "//input[@type='text']"

Что значит вытащить значение? То есть чему равен путь?

 

Это значит мне нужно вытащить строку "//input[@type='text']"
Я подозреваю, что это скорее всего получится через input,getAtribute("имяатрибута"), но я не знаю что указывать в имени  атрибута, пытался разные значения, но ничего толкового не вышло.


  • 0

#4 Argem

Argem

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

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


Отправлено 25 февраля 2015 - 22:17

То есть у меня есть масса объектов и они во время теста передаются в том числе на проверку существования, и вот необходимо узнать значение, по котрому идентифицируется объект, чтобы в лог ошибки писать осмысленное сообщение, чтобы было сразу видно на каком объекте сломался тест.


  • 0

#5 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 26 февраля 2015 - 02:33

Ужасно созданный вопрос в лучших традициях "багов от разрабов".
Попробуем догататься что вам нужно, тем самым добившись истины.
Необходимо знать - где лежит необходимый вам текст. В аттрибуте, или же является текстом внутри тега.

Не пробовали инспектировать элемент в браузере.
Так как это input - подозреваю, что необходимый лежит в теге @value. А значит достать текст можно с помощью метода getAttribute("value");

 

А значение по которому идентифицируется объект вы ведь и указываете, в конце концов)


  • 0

:smile:


#6 Argem

Argem

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

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


Отправлено 26 февраля 2015 - 07:50

Ужасно созданный вопрос в лучших традициях "багов от разрабов".
Попробуем догататься что вам нужно, тем самым добившись истины.
Необходимо знать - где лежит необходимый вам текст. В аттрибуте, или же является текстом внутри тега.

Не пробовали инспектировать элемент в браузере.
Так как это input - подозреваю, что необходимый лежит в теге @value. А значит достать текст можно с помощью метода getAttribute("value");

 

А значение по которому идентифицируется объект вы ведь и указываете, в конце концов)

 

 

 

Дело  в  том,  что  input - это text field, то  есть  тектовое поле, но не в  этом  суть.

Этот объект  задан  по xpath:

    @FindBy(xpath="//input[@type='text']")
    private WebElement input;

 

Однако, этот элемент может и не подгрузиться,   и тогда попытка взять  у него getAttribute("value") выльется   в исключение нулевого объекта.

Вот  в таком случае ,  когда элемент  не подгружен,  я хочу взять  у объекта то значение,  которым я его определил,  то  есть взять  значение xpath равное //input[@type='text'


  • 0

#7 mazik7

mazik7

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

  • Members
  • Pip
  • 63 сообщений
  • ФИО:Мазик
  • Город:Красноярск

Отправлено 27 февраля 2015 - 07:15

То есть в вашем случае исключение ожидаемо, и вы хотите вытащить селектор? Вообще вроде как дефолтный Exception выкидывает эту информацию. Но - если хочется "я сам", то сделайте какую-нибудь обертку.

string xPath = "//*[@type='text']";
            try
            {
                UIDriver.driver.FindElement(By.XPath(xPath)).GetAttribute("textContent");
            }
            catch (NotFoundException)
            {
                
            }

Ну и в теле catch передавайте значение xPath куда хотите =)
Не факт кстати, что NotFoundException. 

Ах да, и пример шарповый приведен.


  • 0

:smile:


#8 Argem

Argem

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

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


Отправлено 27 февраля 2015 - 07:56

То есть в вашем случае исключение ожидаемо, и вы хотите вытащить селектор? Вообще вроде как дефолтный Exception выкидывает эту информацию. Но - если хочется "я сам", то сделайте какую-нибудь обертку.

string xPath = "//*[@type='text']";
            try
            {
                UIDriver.driver.FindElement(By.XPath(xPath)).GetAttribute("textContent");
            }
            catch (NotFoundException)
            {
                
            }

Ну и в теле catch передавайте значение xPath куда хотите =)
Не факт кстати, что NotFoundException. 

Ах да, и пример шарповый приведен.

Да, вы все правильно поняли.

Я так и сделал, убив день и ничего не вытащив другими способами.
Получилось  примерно так,  может кому надо будет:
          if(x>=timeout){
                try {
                    by.getAttribute("ff");
                } catch (NoSuchElementException e) {
                    fail(e.getMessage().substring(27, 80)+", timeout="+timeout+"sec.");
                }              
          }

 

где by - элемент, а из экзепшена  я вырезаю только  часть  строки,  чтобы не захламлять лог ненужными строками.
 


  • 0


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

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