Как захватить только часть идентификатора?

Я пытаюсь захватить идентификатор элемента, который будет генерироваться случайным образом. Я могу успешно захватить значение моего элемента id, как это...

| storeAttribute | //div[1]@id | variableName |

Теперь моя переменная будет что-то вроде...

divElement-12345

Я хочу удалить divElement-, чтобы у меня осталась переменная 12345, чтобы я мог использовать ее позже, чтобы выбрать связанный с ней элемент form-12345... что-то вроде этого:

| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |

Как я мог бы достичь этого?

2 ответа

Решение

У вас есть два варианта в Selenium, XPath и CSS Selector. Я читал, что CSS Selector лучше подходит для тестирования в FireFox и IE. Используя последнюю версию Selenium IDE (3/5/2009), я успешно использовал storeEval, который оценивает выражения Javascript, предоставляя вам доступ к строковым функциям javascript.

XPath:

storeAttribute | //div[1]@id                                            | divID
storeEval      | '${divID}'.replace("divElement-", "")                  | number
type           | //tr[@id='form-${number}']/td/form/fieldset/p[1]/input | Type this

CSS Selector:

storeAttribute | css=div[1]@id                                                     | divID
storeEval      | '${divID}'.replace("divElement-", "")                             | number
type           | css=tr[id='form-${number}'] > td > form > fieldset > p[1] > input | Type this

В XPATH есть много функций, которые должны решить вашу проблему. Предполагая, что "divElement-" является константой, которая не изменится и что вы используете XPath 2.0, я бы предложил:

подстрока-после (Div[1]/@ идентификатор / текст (),"divElement-")

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