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