XPathについて(お勧め)
今回、あるWebシステムのバージョンアップがあり、それに伴うシナリオ修正を行い、気づいたことがあります。
ブラウザはEdgeを使用していますが、当初、慣れないXPathを使うため、DevToolsでXPathコピーや完全なXPathコピーでXPathを取得し、記述していました。
ですから、タグの変更がすべてのXPath変更となり、かなりの時間を使いました。
こういう指定だったら、それ程修正が必要なかったと思ったのが次のようなことです。
<お勧め1>
例としてログイン名入力欄のXPathですが、
DevTools XPathコピー://*[@id="XXXXX"]/div[1]/div[2]/div/input
DevTools 完全なXPathコピー:/html/body/div/form/div/div/div[1]/div[2]/div/input
しかし、タグを見てみると
<input name="account" value="" title="ログイン名" type="text">
となっており、
//input[@title="ログイン"]
と記述しておけば、タグの順番が変わっても修正不要でした。
こんな事がほとんどで、今回後者のような指定に全て変更しました。
<お勧め2>
XPathはプロパティに直書きしないで、変数の初期値にセットすることで、デバッグ(試験しながら直すこと)の効率がよいことが分かりました。
変数にしておくと、XPathがエラーになった時、実行を止めなくても、変数一覧の現在値を修正して実行でき、正しいXPathになるまで繰り返すことができ、うまくいったらそのまま進めることができます。(修正点はメモしておきます)
値⇒で指定すると、いちいち実行を止める必要があります。部分実行でもある程度は可能ですが、流れで確認にするには最初からやり直すことになります。
今回、XPathは全て変数化しました。
<お勧め3>
ログインや共通の処理部分は共通シナリオとして作っておき、シナリオファイル呼び出しで各シナリオから共通で使用するようにしておくと便利です。
このバージョンアップしたシステムを使っているシナリオは、何十本もありましたが、共通シナリオの修正で、ほぼ、各シナリオの修正は不要でした。
システム更改は、いつか必ず行われます。ですから、同じシステムを使うシナリオの共通処理は、共通シナリオとして作成しておきます。
その共通シナリオを呼び出すのも共通ライブラリにしておくと、作成も楽になります。
ぜひ、参考にしてください。