Как захватить только часть идентификатора?
-
03-07-2019 - |
Вопрос
Я пытаюсь получить идентификатор элемента, который будет сгенерирован случайным образом.Я могу успешно зафиксировать значение моего идентификатора элемента следующим образом...
| storeAttribute | //div[1]@id | variableName |
Теперь моя переменная будет выглядеть примерно так...
divElement-12345
Я хочу удалить 'DivElement-', чтобы у меня осталась переменная '12345', чтобы я мог использовать ее позже, чтобы выбрать связанный с ней элемент 'form-12345' ... что-то вроде этого:
| type | //tr[@id='form-${variableName}']/td/form/fieldset/p[1]/input | Type this |
Как я мог бы этого добиться?
Решение
В 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-селектор:
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]/@id/text(),"DivElement-")