【selenium ide】新しいウインドウが開く系で エラーになる時は同ウインドウで開くといい

今回から始まったselenium ideのtipsを紹介するシリーズ。
基本的な使い方はネット上にゴロゴロあるので、そちらを見てもらうとして、当ブログではseleinum ideを使っていて自分が困ったことを解決した方法を紹介します。
他にも解決法はあると思いますので、ここを見た人のためにも是非コメントを残していただければと思います。

インストール方法と使用例は以下の記事にてどうぞ。

お小遣いサイトのクリックポイントを自動で行うツール

新しいウインドウを開く動作をするとよくエラーになる

リンクが target="_blank" である場合にクリックすると新しいウインドウが開きますが、その後selectWindowやらcloseやら使ってなんとかテストケースを作っていくものの、なぜかコケてしまうというケースがよくあります。
本当にいろいろやって何とかできるようになるんだけど、時々コケてしまったり・・・もうパソコンを投げたくなります。

同ウインドウで開くようにしたい

エラーになった原因はウインドウをまたぐ動作だからだということは何となくわかる。
だったら同ウインドウでそのリンク先を開けるようにできればいいのにと思うんじゃないでしょうか?

storeAttributeでURLを変数に格納する

リンクをクリックしてしまうと新しいウインドウが開いてしまうので、clickではなく、openコマンドでリンク先のURLを直接叩ければ同ウインドウで開けますよね。

そんな時に使えるのが storeAttribute コマンドです。まさにリンク先のURLを変数に格納してくれるコマンドがこれ。

対象(target)にxpathを指定

コマンドにstoreAttributeを入力したら対象にはxpathを入れます。
xpathの調べ方はググりましょう。
対象が画像リンクだった時、例えばxpath

/html/body/div/article/div[3]/div[10]/a/img

だったとします。
このaタグの後ろに「@href」を加えます。
xpathを対象に指定する場合は必ず頭に「xpath=」と付けてください。

xpath=/html/body/div/article/div[3]/div[10]/a@href

値には他のstore系コマンドと同様にわかりやすい変数名を入れてください。

これをまとめると

コマンド 対象
storeAttribute xpath=/html/body/div/article/div[3]/div[10]/a@href link

こうなりますね。

あとはこのURLをopenで開くだけ。
変数を呼び出す場合は「${変数名}」 または、 「storedVars.変数名」とします。

 

コマンド   対象
open     ${link}   


storeAttributeコマンドは超使えるこれで同一ウインドウでリンク先のURLが開けますね。

サイトにもよりますが、IDを引っ張り回す場合にURLにそのIDを使う場合って多いですよね。
なのでstoreAttributeでURLを取得して、そのURLからID部分を抜き出して変数に入れていくといろいろ幸せになれます。わかる人にはわかると思うw

 

以上になります。
かなりニッチな内容になりましたが同じように困っている人は多いはず。僕がそうだったから・・・次回からもそんな内容を書きたいと思います。