Selenium. Как достать текст из родительского узла
#1
Отправлено 05 октября 2013 - 13:40
<label>
<input type="checkbox" value="59">
</input>
Нужный текст
</label>
Описание проблемы:
Осуществляется поиск элементов по значению value. Как достать текст "Нужный текст" из родительского узла?
#2
Отправлено 05 октября 2013 - 14:17
element.findElement(By.xpath("parent::*")).getText()
#3
Отправлено 05 октября 2013 - 17:18
Найти родителя найденного узла и получить его текст. Типа
element.findElement(By.xpath("parent::*")).getText()
У меня например VS ругается на getText(), с чего такое может быть?
#4
Отправлено 05 октября 2013 - 17:33
Не знаю :) Хоть ошибку приложите.У меня например VS ругается на getText(), с чего такое может быть?
#5
Отправлено 05 октября 2013 - 18:21
Не знаю :) Хоть ошибку приложите.
У меня например VS ругается на getText(), с чего такое может быть?
http://software-test...post__p__122486
#6
Отправлено 05 октября 2013 - 18:50
#7
Отправлено 16 октября 2013 - 13:11
Имеется следующая последовательность тегов:
<label>
<input type="checkbox" value="59">
</input>
Нужный текст
</label>
Описание проблемы:
Осуществляется поиск элементов по значению value. Как достать текст "Нужный текст" из родительского узла?
Посмотрите в сторону осей ancestor или parent.
#8
Отправлено 22 ноября 2013 - 08:11
<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."
#9
Отправлено 22 ноября 2013 - 10:25
@FindBy(xpath = ".//*[@id='userinfo']") public WebElement userInfoField; public boolean isOnAdminPage() { if (!userInfoField.getText().contains("admin")) return false; else return true; }и проверять содержит ли он текст admin. Имхо это гибче, а то смысл искать элемент, которого может не быть.
#10
Отправлено 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. Имхо это гибче, а то смысл искать элемент, которого может не быть.
#11
Отправлено 10 июля 2014 - 11:00
Спасибо, ваш рецепт помог)
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных