Selenium:xpathと変数を連結することは可能ですか?
質問
私の要素のxpathは非常に読みにくくなっています。
// div [@ id = 'main_content'] / div [2] / div [2] / div [2] / div [4] / table / tbody / tr [2] / td / form / fieldset / p [1] / input
そのほとんどを変数として保存し、後で次のように使用できればいいと思います:
| assertElementPresent | $ {myForm}。 / fieldset / p [1] / input |
このようなことは可能ですか?それは私のテストをとても読みやすくするでしょう!
解決
要素のIDにセレン抑制を固定する必要があります本当に。 2か月後には、特に、調べる必要があるときにテストが中断された場合、誰もxpathが何を指しているのか気に入らないでしょう。テストを簡単にするために、定期的にidを要素に追加します。 Javaコードをテスト可能な特別な方法で記述することを受け入れることを学びましたが、HTMLでも大丈夫だと思います。
他のヒント
次のように書くことができます:
store | //div[@id='main_content']/div[2]/div[2]/div[2]/div[4]/table/tbody/tr[2]/td/form | myForm
assertElementPresent | xpath=${myForm}/fieldset/p[1]/input
ただし、Krosenvoldが言ったように、長いxpathは非常に壊れやすい場合があります。コードの読みやすさを懸念し、カスケード変更を行える1つのファイルにすべてのロケーターが必要な場合は、UI要素マップの使用を検討してください。
所属していません StackOverflow