Robotframework выбирает элемент по индексу

В основном я ищу синтаксис, который я могу использовать для выбора элемента с тем же именем, свойствами и атрибутами.

Я думал выбрать их через Index. (К сожалению, Xpath не будет работать, так как это динамический элемент.)

Итак, у меня есть страница, на которой элемент Add отображается дважды, оба они добавляют/выбрасывают другое значение. Но оба они имеют одинаковый идентификатор, атрибуты и имя. В моем тесте мне нужно выбрать первый Add, а затем другой.

${add attributes row}          //*[@data-bind="click: function() { 
$parents[1].addItem($parents[1]
    .attributes()[$parentContext.$index()]) }", index=1]


${add attributes row_2}     //*[@data-bind="click: function() { 
$parents[1].addItem($parents[1]
    .attributes()[$parentContext.$index()]) }", index=2]

Есть ли способ выбрать их по индексу?


person Gheeno San Pascual III    schedule 01.10.2013    source источник


Ответы (1)


Если вы найдете XPath, который выбирает их обоих, вы можете применить предикат ко всему XPath, заключив XPath в круглые скобки. Например, //a выбирает все якоря в DOM. (//a)[4] выбирает 4-й якорь, найденный в DOM. Вы также можете использовать функции last и position для выбора относительных индексов, таких как предпоследний якорь (//a)[last()-1]

Попробуйте такой локатор для 1-го:

xpath=(//*[@data-bind="click: function() {$parents[1].addItem($parents[1].attributes()[$parentContext.$index()]) }"])[1]

Попробуйте такой локатор для второго:

xpath=(//*[@data-bind="click: function() {$parents[1].addItem($parents[1].attributes()[$parentContext.$index()]) }"])[2]

См. этот связанный вопрос

person ombre42    schedule 01.10.2013
comment
Спасибо. Отличный материал. это точный ответ, который я искал. - person Gheeno San Pascual III; 02.10.2013