Добыча атрибутов линка

Ситуация

  1. на странице есть линк с каким-то текстом. Например, “…избранная королевой красоты Венесуэлы…”
  2. обращаясь к этому линку по его тексту, мне нужно сохранить в переменную содержимое этого линка – все то, что находится в тэге ‘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>

6 thoughts on “Добыча атрибутов линка

  1. Блин! Благодаря вашему блогу, из полностью нулевого тестера, я становлюсь мегамозгом! Огромное спасибо за ваш труд! Вы оказали мне неоценимую помощь!

  2. Добрый день Алексей подскажите пожалуйста как мне достать часть ссылки? Есть ссылки вида: 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. 1
      storeAttribute
      //a[contains(text(),’а’)]@href
      variableName

      2
      storeEval
      parseInt(storedVars[‘variableName’].replace(/[^\d]/gim, “”))
      variableName

      Учтите, что тут подход очень грубый и прямолинейный – все символы, которые не цифры, удаляются к едреням. Если в тексте, которые сохранен в переменной, будут еще какие-либо циферки, то они будут оставлены и, соответственно, “приклеены” друг к другу.

      3
      echo
      ${variableName}

      4
      Отпишитесь о результатах.

      1. Отлично!!! То что надо, но слегка подправил ваш код, сначала выдавало ошибку “illegal character” на 2 шаге storeEval. Получилось самостоятельно догадаться заметить кавычки “” на “”. Спасибо вам большое, метод хоть и грубый, но в моем случае подходит на 100% ибо цифры там только в id, ничего лишнего не приплюсовывается.

  3. Добрый день.
    Уже несколько раз сталкивался с проблемой при использовании storeAttribute.
    На странице есть элементы, которые меняют свое состояние: чек-боксы, обязательные поля ввода (подсвечиваются красной рамкой, если не заполнены).
    За эти изменения отвечают определенные атрибуты элемента.
    Например: aria-invalid=”true” (красная рамка, если обязательное поле не заполнено).
    Но на момент загрузки страницы этих атрибутов нет вообще.
    Они появляются в результате действий пользователя.
    Например:
    Сначала

    После:

    Selenium упорно не видит эти атрибуты.
    storeAttribute|//*[@id=’Name’]@aria-invalid|var
    Пробовал и через storeEval:
    window.document.getElementById(“Name”).getAttribute(“aria-invalid”);
    Результат тоже.
    С другими (постоянными) атрибутами проблем нет.

    1. Разобрался.
      Обновить данные атрибутов можно с помощью клика мышкой по элементу.
      Команда Click не помогает. Использовал sendKeys:
      sendKeys|${xpath}|${KEY_ENTER}

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s