Как регулярные выражения работают в селене? - PullRequest
8 голосов
/ 31 декабря 2008

Я хочу сохранить часть идентификатора, а остальные выбросить. Например, у меня есть элемент HTML с идентификатором «элемент-12345». Я хочу выбросить «element-» и оставить «12345». Как мне это сделать?

Я могу зафиксировать и повторить значение, например:

| storeAttribute | //pathToMyElement@id | myId |
| echo | ${!-myId-!} | |

Когда я запускаю тест, я получаю что-то вроде этого:

| storeAttribute | //pathToMyElement@id | myId |
| echo | ${myId} | element-12345 |

Я записываю в Selenium IDE и копирую тест в Fitnesse, используя прибор Selenium Bridge. Проблема в том, что я использую чистую базу данных каждый раз, когда запускаю тест, со случайными идентификаторами, которые мне нужно захватывать и использовать на протяжении всего теста.

Ответы [ 3 ]

11 голосов
/ 05 марта 2009

Решение состоит в том, чтобы использовать функцию JavaScript replace() с storeEval:

| storeAttribute | //pathToMyElement@id                                   | elementID |
| storeEval      | '${elementID}'.replace("element-", "")                 | myID      |

Теперь, если я повторю myID, я получу только ID:

| echo | ${myID} | 12345 |
2 голосов
/ 31 января 2009

Примерно так может работать:

| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |

Для выполнения регулярного выражения требуется XPath 2.0 - не уверен, какую версию Selenium реализует.

2 голосов
/ 31 декабря 2008

/ элемент - (\ d +) / г

Это регулярное выражение, которое фиксирует числа после тире.

...