Ситуация
- на странице есть линк с каким-то текстом. Например, “…избранная королевой красоты Венесуэлы…”
- обращаясь к этому линку по его тексту, мне нужно сохранить в переменную содержимое этого линка – все то, что находится в тэге ‘a href=””‘
Рецепт
<tr>
<td>storeAttribute</td>
<td>//a[contains(text(),’королевой красоты’)]@href</td>
<td>variableName</td>
</tr>
<tr>
<td>echo</td>
<td>${variableName}</td>
<td></td>
</tr>
Блин! Благодаря вашему блогу, из полностью нулевого тестера, я становлюсь мегамозгом! Огромное спасибо за ваш труд! Вы оказали мне неоценимую помощь!
Добрый день Алексей подскажите пожалуйста как мне достать часть ссылки? Есть ссылки вида: http://localhost/editor/edit_main.asp?del=1&id=1656&state=a собственно мне нужен только параметр id который в данном примере равен 1656. Пытаюсь делать по вашему примеру:
storeAttribute
//a[contains(text(),’а’)]@href
variableName
В результате получаю не совсем то:
[info] echo: estim_redact.asp?a_id=1656
Хотелось бы получить только цифру из этой ссылки, это возможно сделать?
1
storeAttribute
//a[contains(text(),’а’)]@href
variableName
2
storeEval
parseInt(storedVars[‘variableName’].replace(/[^\d]/gim, “”))
variableName
Учтите, что тут подход очень грубый и прямолинейный – все символы, которые не цифры, удаляются к едреням. Если в тексте, которые сохранен в переменной, будут еще какие-либо циферки, то они будут оставлены и, соответственно, “приклеены” друг к другу.
3
echo
${variableName}
4
Отпишитесь о результатах.
Отлично!!! То что надо, но слегка подправил ваш код, сначала выдавало ошибку “illegal character” на 2 шаге storeEval. Получилось самостоятельно догадаться заметить кавычки “” на “”. Спасибо вам большое, метод хоть и грубый, но в моем случае подходит на 100% ибо цифры там только в id, ничего лишнего не приплюсовывается.
Добрый день.
Уже несколько раз сталкивался с проблемой при использовании storeAttribute.
На странице есть элементы, которые меняют свое состояние: чек-боксы, обязательные поля ввода (подсвечиваются красной рамкой, если не заполнены).
За эти изменения отвечают определенные атрибуты элемента.
Например: aria-invalid=”true” (красная рамка, если обязательное поле не заполнено).
Но на момент загрузки страницы этих атрибутов нет вообще.
Они появляются в результате действий пользователя.
Например:
Сначала
После:
Selenium упорно не видит эти атрибуты.
storeAttribute|//*[@id=’Name’]@aria-invalid|var
Пробовал и через storeEval:
window.document.getElementById(“Name”).getAttribute(“aria-invalid”);
Результат тоже.
С другими (постоянными) атрибутами проблем нет.
Разобрался.
Обновить данные атрибутов можно с помощью клика мышкой по элементу.
Команда Click не помогает. Использовал sendKeys:
sendKeys|${xpath}|${KEY_ENTER}