Как регулярные выражения работают в селене?

Я хочу сохранить часть идентификатора, а остальные выбросить. Например, у меня есть 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 реализует.

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