Как регулярные выражения работают в селене?
Я хочу сохранить часть идентификатора, а остальные выбросить. Например, у меня есть HTML-элемент с идентификатором "элемент-12345". Я хочу выбросить "element-" и оставить "12345". Как я могу сделать это?
Я могу захватить и повторить значение, как это:
| storeAttribute | // pathToMyElement @ id | myId | | эхо | ${!-myId-!} | |
Когда я запускаю тест, я получаю что-то вроде этого:
| storeAttribute | // pathToMyElement @ id | myId | | эхо | ${myId} | элемент-12345 |
Я записываю в Selenium IDE и копирую тест в Fitnesse, используя прибор Selenium Bridge. Проблема в том, что я использую чистую базу данных каждый раз, когда запускаю тест, со случайными идентификаторами, которые мне нужно захватывать и использовать на протяжении всего теста.
3 ответа
Решение состоит в том, чтобы использовать JavaScript replace()
функция с storeEval
:
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
Теперь, если я эхо myID
Я получаю только удостоверение личности:
| echo | ${myID} | 12345 |
/ Элемент -(\d+)/ я
Это регулярное выражение, которое будет захватывать числа после тире.
Нечто подобное может работать:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
Для выполнения регулярных выражений требуется XPath 2.0 - не уверен, какую версию Selenium реализует.