seleniumer’s diary

「手動でExcelにスクショ貼付け」地獄からきました。テスト自動化しか望みがありません。java + selenium(since 2015/5)

フレーム内にJavascriptExecuterしたいとき

selenium2はフレームも扱えるのが嬉しいところ。

ですがJavascriptExecuterでscriptを実行するには少々気をつけないとダメらしいです。
フレーム名 hogeってのがメインフレームにあるとして、hoge内の何かにアクセスしたい。で、今現在アクティブなのが親フレームとすると
driver.executeScript("window.document.getElementById('target')なんとか")
では動いてくれません。
driver.executeScript("window.hoge.document.getElementById('target')なんとか")
とします。反対に今現在アクティブなフレームがhogeの場合は前者でも動きます。後者だと動かない?(だったと思う。)なので、フレームにscriptExecuteするときはdriver.switchTo()で、親フレームにスイッチしとおくとか前処理があったほうがより確実ってことにしています。
 
私はこれで散々ハマりました。今度生まれ変わったらフレームのないwebの世界に生きたいです。

参考にしたページ:

qiita.com