セレンで正規表現はどのように機能しますか?
-
03-07-2019 - |
質問
IDの一部を保存し、残りを破棄したい。たとえば、「element-12345」というIDを持つhtml要素があります。 「element-」を捨てて、「12345」を保持したい。どうすればこれを達成できますか?
次のように、値をキャプチャしてエコーできます。
| storeAttribute | //pathToMyElement@id | myId | | echo | ${!-myId-!} | |
テストを実行すると、次のようなメッセージが表示されます:
| storeAttribute | //pathToMyElement@id | myId | | echo | ${myId} | element-12345 |
Selenium IDEで録音し、Selenium Bridgeフィクスチャを使用してテストをFitnesseにコピーしています。問題は、テストを実行するたびにクリーンなデータベースを使用しており、テスト中にキャプチャして使用する必要があるランダムなIDを使用していることです。
解決
解決策は、 storeEval
でJavaScript replace()
関数を使用することです。
| storeAttribute | //pathToMyElement@id | elementID |
| storeEval | '${elementID}'.replace("element-", "") | myID |
今 myID
をエコーすると、IDだけが得られます:
| echo | ${myID} | 12345 |
他のヒント
/ element-(\ d +)/ i
これは、ダッシュの後の数字をキャプチャする正規表現です。
このような可能性がある何かが動作します:
| storeAttribute | fn:replace(//pathToMyElement@id,"^element-","") | myId |
正規表現を実行するにはXPath 2.0が必要です-Seleniumが実装しているバージョンがわからない。
所属していません StackOverflow