2008-12-31 24 views
8

Chcę zachować część identyfikatora i wyrzucić resztę. Na przykład mam element html o identyfikatorze "element-12345". Chcę wyrzucić "element" i zachować "12345". Jak mogę to zrobić?Jak działają wyrażenia regularne w selen?

mogę uchwycić i echo wartości, na przykład:

| storeAttribute | //[email protected] | myId | 
| echo | ${!-myId-!} | |

Kiedy wykonać test, mam coś takiego:

| storeAttribute | //[email protected] | myId | 
| echo | ${myId} | element-12345 |

Mam nagranie z Selenium IDE i skopiowanie testu do Fitnesse, używając urządzenia Selenium Bridge. Problem polega na tym, że używam czystej bazy danych za każdym razem, gdy uruchamiam test, z przypadkowymi identyfikatorami, które muszę przechwycić i wykorzystać podczas całego testu.

+0

+1 gdyż selen jest doskonałym narzędziem! –

Odpowiedz

11

Rozwiązaniem jest użycie funkcji JavaScript replace() z storeEval:

| storeAttribute | //[email protected]         | elementID | 
| storeEval  | '${elementID}'.replace("element-", "")     | myID  | 

Teraz gdybym echo myID mam tylko ID:

| echo | ${myID} | 12345 | 
2

/element - (\ d +)/I

To wyrażenie regularne, które przechwytywania numerów po desce rozdzielczej.

+0

Dzięki! Gdzie to się podziała w moim kodzie? | storeAttribute | // pathToMyElement @ id | myId | – Andrew

+0

Bardzo mi przykro, ale nigdy wcześniej nie używałam Selenium. Wysłałem zwykłe wyrażenie z nadzieją, że ktoś, kto używał go wcześniej, może przyjść i pomóc ci go użyć. Zrobię trochę badań i zobaczę, czy mogę wymyślić odpowiedź :) – Salty

2

coś takiego może pracy:

| storeAttribute | fn:replace(//[email protected],"^element-","") | myId | 

Aby zrobić regex wymaga XPath 2.0 - nie wiem, która wersja narzędzia selen.