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

Фотография

Selenium. Как достать текст из родительского узла


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

#1 qindiggo

qindiggo

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:V Ann

Отправлено 05 октября 2013 - 13:40

Имеется следующая последовательность тегов:
<label>
<input type="checkbox" value="59">
</input>
Нужный текст
</label>

Описание проблемы:
Осуществляется поиск элементов по значению value. Как достать текст "Нужный текст" из родительского узла?
  • 0

#2 neman

neman

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

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 05 октября 2013 - 14:17

Найти родителя найденного узла и получить его текст. Типа
element.findElement(By.xpath("parent::*")).getText()

  • 1

#3 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 05 октября 2013 - 17:18

Найти родителя найденного узла и получить его текст. Типа

element.findElement(By.xpath("parent::*")).getText()


У меня например VS ругается на getText(), с чего такое может быть?
  • 0

#4 neman

neman

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

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 05 октября 2013 - 17:33

У меня например VS ругается на getText(), с чего такое может быть?

Не знаю :) Хоть ошибку приложите.
  • 0

#5 silexz

silexz

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

  • Members
  • Pip
  • 25 сообщений
  • ФИО:Квасов Сергей Васильевич

Отправлено 05 октября 2013 - 18:21


У меня например VS ругается на getText(), с чего такое может быть?

Не знаю :) Хоть ошибку приложите.


http://software-test...post__p__122486
  • 0

#6 neman

neman

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

  • Members
  • PipPip
  • 142 сообщений
  • ФИО:Антон


Отправлено 05 октября 2013 - 18:50

А, так это C#.. Я привел код на джаве, на шарпе с селениумом не работал.
  • 0

#7 yaffi

yaffi

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:Агапонова Наталия


Отправлено 16 октября 2013 - 13:11

Имеется следующая последовательность тегов:
<label>
<input type="checkbox" value="59">
</input>
Нужный текст
</label>

Описание проблемы:
Осуществляется поиск элементов по значению value. Как достать текст "Нужный текст" из родительского узла?



Посмотрите в сторону осей ancestor или parent.
  • 0

#8 220v

220v

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

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


Отправлено 22 ноября 2013 - 08:11

Добрый день. Помогите советом при написании xpath. Использую последний селениум, ФФ 24, Эклипс, Джава.

<div id="userinfo">
<em>User role:</em>
admin


Через Firebug (xpath) я вижу всё xpath'ы за исключением "admin"

Возможно ли написать xpath, чтобы "поймать" текст "admin"? (именно этот текст нужен, т.к. роли меняются и вместо "admin" будет "юзер1"/"юзер2" и т.д.)

Проверка типа такой:
@FindBy(xpath = "вот тут и нужен xpath")
public WebElement userInfoField;

public boolean isOnAdminPage() {
return userInfoField.isDisplayed();
}

assertTrue("You are not an Admin!", adminPage.isOnAdminPage())


Сам написал вот такой xpath=".//*[@id='userinfo']/em/following-sibling::text()[1]", но селениум выдает ошибку

"Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: The given selector .//*[@id='userinfo']/em/following-sibling::text()[1] is either invalid or does not result in a WebElement. The following error occurred:
InvalidSelectorError: The result of the xpath expression ".//*[@id='userinfo']/em/following-sibling::text()[1]" is: [object XrayWrapper [object Text]]. It should be an element."
  • 0

#9 Snap

Snap

    Специалист

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


Отправлено 22 ноября 2013 - 10:25

А почему у вас div не закрыт? Может можно сделать "попроще", например так, взяв за основу id:
@FindBy(xpath = ".//*[@id='userinfo']")
public WebElement userInfoField;

public boolean isOnAdminPage() {
if (!userInfoField.getText().contains("admin"))
    return false;
else return true;
}
и проверять содержит ли он текст admin. Имхо это гибче, а то смысл искать элемент, которого может не быть.
  • 2

#10 220v

220v

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

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


Отправлено 22 ноября 2013 - 10:49

А почему у вас div не закрыт?

Это кусок кода был...

Может можно сделать "попроще", например так, взяв за основу id:

@FindBy(xpath = ".//*[@id='userinfo']")
public WebElement userInfoField;

public boolean isOnAdminPage() {
if (!userInfoField.getText().contains("admin")
    return false;
else return true;
}
и проверять содержит ли он текст admin. Имхо это гибче, а то смысл искать элемент, которого может не быть.

Спасибо, вроде всё работает как и необходимо
  • 0

#11 qindiggo

qindiggo

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

  • Members
  • Pip
  • 5 сообщений
  • ФИО:V Ann

Отправлено 10 июля 2014 - 11:00

Спасибо, ваш рецепт помог)


  • 0


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

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