Невозможно выбрать 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