Невозможно выбрать n-й элемент того же класса с IDE xpath / selenium

Не понимаю, почему следующий цикл не работает, за исключением того, что n-й элемент с тем же классом не работает на 2-м элементе (я предполагаю, что 1-й элемент работает, потому что он также является корнем в xpath):

{
  "Command": "storeEval",
  "Target": "$('.className').length",
  "Value": "max"
},
{
  "Command": "store",
  "Target": "1",
  "Value": "i"
},
{
  "Command": "while",
  "Target": "(${i} < ${max})",
  "Value": ""
},
{
  "Command": "echo",
  "Target": "Current value of i = ${i}",
  "Value": "i"
},
{
  "Command": "storeAttribute",
  "Target": "//a[contains(@class, 'className')][${i}]@href",
  "Value": "link"
},
{
  "Command": "endWhile",
  "Target": "",
  "Value": ""
}

Для отладки я попытался изменить ...[${i}] в [2] и это терпит неудачу как с Kantu, так и с Ranorex Selocity. Однако из моего прочтения документации по xpath / Selenium IDE этот синтаксис должен быть правильным. Любой совет?

PS. Для справки, .className на самом деле .rf-project-cover__title на странице https://www.behance.net/search?field=132&content=projects&sort=published_date&time=week

1 ответ

Решение

Я думаю, что вы хотите найти, а затем извлечь i-й пункт, поэтому вам нужны скобки:

(//a[contains(@class, 'className')])[${i}]

например:

(//a[contains(@class, 'rf-project-cover__title')])[2]

возвращает элемент с текстом ссылки my portfolio

Другие вопросы по тегам